2016-11-17 59 views
1

一個Word文檔中的所有隱藏的文本使用PowerShell,我需要編寫一個腳本這將移除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文檔[鏈接](https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.find.execute.aspx)它說,返回類型是真還是假。 $是真的還是假的?我不認爲你需要$ a,除非你想知道它是真是假。如果您刪除$ a,它是否正確運行?謝謝,TIm。 –

+0

它實際上返回$ false ...我不明白爲什麼。 –

+0

$ objSelection.Find.Execute($ FINDTEXT,$ MatchCase,$ MatchWholeWord,$ MatchWildcards,$ MatchSoundsLike,$ MatchAllWordForms,$前進,$裹,$格式,$ ReplaceWith,$的replaceAll) 如果你只是運行會發生什麼以上?而不是$ a =在它前面。 –

回答

1

這個錯誤是你設置的搜索過濾器,以發現隱藏的文本。取而代之的$objSelection.Font.Hidden = $True(這實際上隱藏當前選中的文本),你需要設置$objSelection.Find對象的屬性:

$objSelection.Find.Font.Hidden = $True