2016-10-18 8 views
-1

私の.docxファイル内のいくつかの単語をPowershell経由で別の.txtファイルの文字列に置き換えたいと思います。 私が開いて、二つの機能で単語を置き換えるために試してみてください。.docxファイル内の多くの単語をPowershellに置き換える

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) 
} 

私は機能付きでドキュメントを開いて、それが動作する文字列でWordを交換してみてください、私は複数の単語を変更しようとすると、それがありませんその機能を備えた他の単語は見つけられません。 文書を開いた後に直接検索すると、それらを見つけることができます。だから、スクリプトは検索された最初の単語だけを検索します。

関数を間違って作成しましたか?

編集:私はこのような関数を呼び出しています: あなたは最後の値を変更する必要がドキュメント内の複数の文字列を置換したい:

$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" 
} 
+0

どのようにSearchAWord'あなたはこのコードを追加することができます '呼んでいますか? – Richard

+0

@リチャードはメインポストの両方の機能にコールを追加しました – Paxz

答えて

0

[OK]を、私は答えを見つけました「2」、これはすべてを交換する機能WdReplace-定数を設定します$ Document.Find.ExecuteのMethodeの中でVARを「置き換え」:

$Document.Find.Execute($FindText,$MatchCase,$MatchWholeWord,$MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,$Wrap,$Format,$ReplaceWith,2) 
関連する問題