在Microsoft Publisher替换文本使用PowerShell(Replacing Tex

2019-10-24 14:01发布

我的人力资源团队问我能不能帮他们为我们的所有员工产生的新名片。 他们有一个Publisher文件,我试图替换的文字。我已经写了一切从拉公元信息和循环机制的部分,但我不能得到的文本替换工作。 我用之前已经做了在Microsoft Word中像这样从Word Find.Execute方法。 这是简单,因为我刚刚喂方法我的论点和它的工作。

不过这一次,我试图用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()

Answer 1:

我想$pbReplaceScopeAll没有定义。 虽然它看起来像它应该的文件中。 该文档使用Visual Basic中,其中隐含的枚举变量创建一门语言。

PowerShell不提供此功能,所以你必须直接引用枚举值你所需要的。 这可能会实现:

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

如果不工作, 它看起来像的pbReplaceScopeAll值是2 ,那么你可以定义$ pbReplaceScopeAll自己:

$pbReplaceScopeAll = 2
## snip
$OpenDoc.Find.ReplaceScope = $pbReplaceScopeAll


文章来源: Replacing Text in Microsoft Publisher Using Powershell