1

人事チームから、全従業員用の新しい名刺の作成を手伝ってもらえないかと尋ねられました。彼らには Publisher ファイルがあり、テキストを置き換えようとしています。AD から情報を取得するすべての部分とループ メカニズムを書きましたが、テキストの置き換えを機能させることができません。Word のFind.Execute メソッドを使用する前に、Microsoft Word でこのようなことを行いました。メソッドに引数を与えるだけでうまくいったので、それは簡単でした。

今回は、Publisher の FindReplace オブジェクトを使用しようとしています。私はそれを悪用していると思いますが、方法がわかりません。私のコードは以下のとおりです。入力をいただければ幸いです。ばかげた質問で申し訳ありませんが、私はまだ PowerShell と .NET に比較的慣れていません。

$Document = "C:\Test\testcard.pub"

$Publisher = New-Object -comobject Publisher.Application  

$OpenDoc = $Publisher.Open($Document)

$OpenDoc.Find.Clear()
$OpenDoc.Find.FindText = "Jane"
$OpenDoc.Find.ReplaceWithText = "John"
$OpenDoc.Find.ReplaceScope = $pbReplaceScopeAll
$OpenDoc.Find.Execute() 

$OpenDoc.Save()
$OpenDoc.Close()
$Publisher.quit()
4

1 に答える 1

0

$pbReplaceScopeAll定義されていないと思います。ドキュメントにあるように見えますが。ドキュメントでは、列挙から暗黙的に変数を作成する言語である Visual Basic を使用しています。

PowerShell はこの機能を提供しないため、必要な列挙値を直接参照する必要があります。これはうまくいくかもしれません:

$OpenDoc.Find.ReplaceScope = [Publisher.PbReplaceScope]::pbReplaceScopeAll

それが機能しない場合、値はのように見えるので、自分で $pbReplaceScopeAll を定義できます。pbReplaceScopeAll2

$pbReplaceScopeAll = 2
## snip
$OpenDoc.Find.ReplaceScope = $pbReplaceScopeAll
于 2015-08-05T22:51:54.740 に答える