У меня есть куча документов MS Word 2010, и мне нужно преобразовать их из формата Letter в формат A4. Есть ли простой способ сделать это? Возможно, какой-то скрипт PowerShell в сочетании с каким-то API MS Word?
решение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
Версия 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()