У меня есть несколько документов MS Word 2010, и мне нужно преобразовать их из формата страницы Letter в A4. Есть ли простой способ сделать это? Возможно, какой-нибудь сценарий PowerShell в сочетании с API-интерфейсом MS Word?
2 ответа
5
Вот некоторые 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
, затем нажмите «Выполнить». Текущий открытый документ закроется, а другие документы откроются и закроются по мере внесения изменений в каждый документ в папке.
1
Версия PowerShell, основанная на ответе CharlieRB:
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()