2016-11-17 3 views
1

Используя PowerShell, мне нужно написать скрипт, который удалит весь скрытый текст Word Document.Программно удалить весь скрытый текст в документе Word

Вот то, что я до сих пор:

$WordDocument = Get-Item "C:\MyWordDocument.docx" 

$word_app = New-Object -ComObject Word.Application 
$word_app.Visible = $false 

$document = $word_app.Documents.Open($WordDocument.FullName) 

$objSelection = $word_app.Selection 
$objSelection.Font.Hidden = $True 

$FindText = "" # search on formatting only (according to MS doc) 
$wdFindContinue = 1 
$ReplaceAll = 2 
$MatchCase = $False 
$MatchWholeWord = $False 
$MatchWildcards = $False 
$MatchSoundsLike = $False 
$MatchAllWordForms = $False 
$Forward = $True 
$Wrap = $wdFindContinue 
$Format = $True # ? 
$ReplaceWith = "" 

$a = $objSelection.Find.Execute($FindText,$MatchCase,$MatchWholeWord, ` 
    $MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,` 
    $Wrap,$Format,$ReplaceWith,$ReplaceAll) 
$document.Save() 
$document.Close() 

$word_app.Quit() 

Это не работает, и я не могу понять, почему.

Любая идея?

+0

Привет Жером, вы назначаете $ а для вызова метода Find.Execute. В документации по MS [link] (https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.find.execute.aspx) говорится, что тип возврата - True или False. Является ли значение true или false? Я не думаю, что вам нужно $ a, если вы не хотите знать, истинно это или ложно. Если вы удалите $ a, он работает правильно? Спасибо, ТИМ. –

+0

Это действительно возвращает $ false ... Я не понимаю, почему. –

+0

$ objSelection.Find.Execute ($ FindText, $ MatchCase, $ MatchWholeWord, $ MatchWildcards, $ MatchSoundsLike, $ MatchAllWordForms, $ Forward, $ Wrap, $ Format, $ ReplaceWith, $ ReplaceAll) Что произойдет, если вы просто запустите выше? Вместо $ a = перед ним. –

ответ

1

Ошибка: здесь вы установили фильтр поиска, чтобы найти скрытый текст. Вместо $objSelection.Font.Hidden = $True (это на самом деле скрывает выбранный текст), необходимо установить свойство на $objSelection.Find объекта:

$objSelection.Find.Font.Hidden = $True 
Смежные вопросы