【发布时间】:2017-02-27 08:23:42
【问题描述】:
我想通过 Powershell 将我的 .docx 文件中的一些单词替换为另一个 .txt 文件中的一些字符串。 我打开并尝试用两个函数替换单词:
Function OpenWordDoc($Filename)
{
$objWord = New-Object -comobject Word.Application
$objWord.Visible = $True;
$objWord.Documents.Open($Filename)
$objSelection = $objWord.Selection
Return $objSelection; #return objWord
}
Function SearchAWord($Document,$search,$replacewithtext)
{
$FindText = $search
$MatchCase = $False
$MatchWholeWord = $False
$MatchWildcards = $False
$MatchSoundsLike = $False
$MatchAllWordForms = $False
$Forward = $True
$Wrap = $wdFindContinue
$Format = $False
$wdReplaceNone = 1
$ReplaceWith = $replacewithtext
$wdFindContinue = 1
$a=$Document.Find.Execute($FindText,$MatchCase,$MatchWholeWord,$MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,$Wrap,$Format,$ReplaceWith,$wdReplaceNone)
}
当我使用函数打开文档并尝试用字符串替换单词时,它可以工作,但是当我尝试更改更多单词时,它找不到使用函数的其他单词。 当我打开文档后直接搜索它们时,我可以找到它们。所以脚本总是只找到搜索的第一个单词。
我创建的函数有错吗?
编辑:我这样调用函数:
$doc=OpenWordDoc -Filename "C:\Users\$UserName\Desktop\test.docx"; #opens the Word-doc
for([int]$i=0; $i -ne 4;$i++)
{
SearchAWord -Document $doc -search "string$i" -replacewithtext "test$i"
}
【问题讨论】:
-
你怎么打电话给
SearchAWord可以添加这段代码吗? -
@Richard 在 main-post 中添加了对这两个函数的调用
标签: string function powershell ms-word