我有一堆 MS Word 2010 文档,需要将它们从 Letter 页面大小转换为 A4。有没有简单的方法可以做到这一点?可能是一些 PowerShell 脚本与一些 MS Word API 相结合?
答案1
这里有一些 VBA,您可以将其添加为宏来更改给定文件夹中的所有 Word 文档。
警告:运行此代码之前请备份您的文件。
打开一个新的 Word 文档,将此代码粘贴到 VBA 窗口 ( Alt+ F11)。对路径进行必要的更改,然后关闭窗口。
Sub ChangePaperSize()
Dim myFile As String
Dim myPath As String
Dim myDoc As Document
'Change to the path where your documents are located.
'This code changes ALL documents in the folder.
'You may want to move only the documents you want changed to seperate folder.
myPath = "C:\temp\"
'Closes open documents before beginning
Documents.Close SaveChanges:=wdPromptToSaveChanges
'Set the path with file name for change
myFile = Dir$(myPath & "*.docx")
Do While myFile <> ""
'Open the document and make chages
Set myDoc = Documents.Open(myPath & myFile)
myDoc.PageSetup.PaperSize = wdPaperA4
'Close and saving changes
myDoc.Close SaveChanges:=wdSaveChanges
'Next file
myFile = Dir$()
Loop
msgbox "Process complete!"
End Sub
打开宏窗口 ( Alt+ F8) 并选择ChangePaperSize
,然后单击运行。当前打开的文档将关闭,并且随着对文件夹中的每个文档进行更改,其他文档也将打开和关闭。
答案2
根据 CharlieRB 的回答,PowerShell 版本:
param(
[parameter(position=0)]
[string] $Path
)
$docFiles = (Get-ChildItem $Path -Include *.docx,*.doc -Recurse)
$word = New-Object -com Word.Application
foreach ($docFile in $docFiles) {
$doc = $word.Documents.Open($docFile.FullName)
$doc.PageSetup.PaperSize = [Microsoft.Office.Interop.Word.WdPaperSize]::wdPaperA4
$doc.Save()
$doc.Close()
}
$word.Quit()