使用 Powershell 替换 Microsoft Publisher 中的文本
Replacing Text in Microsoft Publisher Using Powershell
我的人力资源团队问我是否可以帮助他们为所有员工制作新名片。他们有一个 Publisher 文件,我正在尝试替换其中的文本。我已经编写了从 AD 和循环机制中提取信息的所有部分,但我无法让文本替换发挥作用。在使用 Find.Execute Method from Word. 之前,我在 Microsoft Word 中做过类似的事情,这很简单,因为我只是提供了我的参数的方法并且它起作用了。
虽然这一次,我正在尝试使用 FindReplace Object from Publisher. 我想我误用了它,但我不确定如何使用它。我的代码在下面,任何输入将不胜感激。抱歉,如果这是一个愚蠢的问题,但我对 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()
我认为 $pbReplaceScopeAll
没有定义。即使它看起来应该在文档中。该文档使用 Visual Basic,这是一种从枚举中隐式创建变量的语言。
PowerShell 不提供此功能,因此您必须直接参考您需要的 the enumeration value。这可能有效:
$OpenDoc.Find.ReplaceScope = [Publisher.PbReplaceScope]::pbReplaceScopeAll
如果这不起作用,it looks like pbReplaceScopeAll
值为 2
,因此您可以自己定义 $pbReplaceScopeAll:
$pbReplaceScopeAll = 2
## snip
$OpenDoc.Find.ReplaceScope = $pbReplaceScopeAll
我的人力资源团队问我是否可以帮助他们为所有员工制作新名片。他们有一个 Publisher 文件,我正在尝试替换其中的文本。我已经编写了从 AD 和循环机制中提取信息的所有部分,但我无法让文本替换发挥作用。在使用 Find.Execute Method from Word. 之前,我在 Microsoft Word 中做过类似的事情,这很简单,因为我只是提供了我的参数的方法并且它起作用了。
虽然这一次,我正在尝试使用 FindReplace Object from Publisher. 我想我误用了它,但我不确定如何使用它。我的代码在下面,任何输入将不胜感激。抱歉,如果这是一个愚蠢的问题,但我对 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()
我认为 $pbReplaceScopeAll
没有定义。即使它看起来应该在文档中。该文档使用 Visual Basic,这是一种从枚举中隐式创建变量的语言。
PowerShell 不提供此功能,因此您必须直接参考您需要的 the enumeration value。这可能有效:
$OpenDoc.Find.ReplaceScope = [Publisher.PbReplaceScope]::pbReplaceScopeAll
如果这不起作用,it looks like pbReplaceScopeAll
值为 2
,因此您可以自己定义 $pbReplaceScopeAll:
$pbReplaceScopeAll = 2
## snip
$OpenDoc.Find.ReplaceScope = $pbReplaceScopeAll