Word文件的大量背景颜色更改
Mass background color change of Word files
我有大约 400 个 Word 文件,我正在寻找一种方法来用脚本替换所有文件的背景颜色。这是可以通过任何方式实现的东西吗?
一般方法是将您要进行的更改记录为 VBA 宏,将该宏从 VBA 转换为 PowerShell,然后遍历文档以修改它们。
$wd = New-Object -COM 'Word.Application'
$wd.Visible = $true # set to $false for production
Get-ChildItem 'C:\some\folder\with\*.docx' | % {
$doc = $wd.Documents.Open($_.FullName)
# your modifications to $doc here
$doc.Save()
$doc.Close()
}
$wd.Quit()
[Runtime.InteropServices.Marshal]::ReleaseComObject($wd)
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
我刚才为 translating VBA to VBScript 写了一篇指南。其中大部分应该也适用于 PowerShell,尽管存在一些差异:
- Collection 项必须作为
.Collection.Item(x)
访问。在 VBScript 中有效的缩写语法 .Collection(x)
在 PowerShell 中无效。
- 函数调用需要括号(
.Close()
而不是 .Close
)。
- 参数不能省略。如果您希望参数具有默认值,则必须使用
[Type]::Missing
。
我有大约 400 个 Word 文件,我正在寻找一种方法来用脚本替换所有文件的背景颜色。这是可以通过任何方式实现的东西吗?
一般方法是将您要进行的更改记录为 VBA 宏,将该宏从 VBA 转换为 PowerShell,然后遍历文档以修改它们。
$wd = New-Object -COM 'Word.Application'
$wd.Visible = $true # set to $false for production
Get-ChildItem 'C:\some\folder\with\*.docx' | % {
$doc = $wd.Documents.Open($_.FullName)
# your modifications to $doc here
$doc.Save()
$doc.Close()
}
$wd.Quit()
[Runtime.InteropServices.Marshal]::ReleaseComObject($wd)
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
我刚才为 translating VBA to VBScript 写了一篇指南。其中大部分应该也适用于 PowerShell,尽管存在一些差异:
- Collection 项必须作为
.Collection.Item(x)
访问。在 VBScript 中有效的缩写语法.Collection(x)
在 PowerShell 中无效。 - 函数调用需要括号(
.Close()
而不是.Close
)。 - 参数不能省略。如果您希望参数具有默认值,则必须使用
[Type]::Missing
。