【发布时间】:2017-04-01 01:46:21
【问题描述】:
使用 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()
它不起作用,我不知道为什么。
有什么想法吗?
【问题讨论】:
-
您好 Jérôme,您正在将 $a 分配给 Find.Execute 方法调用。从 MS 文档 link 中可以看出,返回类型是 True 或 False。 $a 是真还是假?我认为您不需要 $a ,除非您想知道它是真还是假。如果您删除 $a,它是否运行正确?谢谢,蒂姆。
-
它实际上返回 $false... 我不明白为什么。
-
$objSelection.Find.Execute($FindText,$MatchCase,$MatchWholeWord, $MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,$Wrap,$Format,$ReplaceWith,$ReplaceAll) 会发生什么如果你只是运行上面的?而不是 $a = 在它前面。
-
同样的问题,没有任何改变...
标签: powershell ms-word com