1

У меня есть несколько документов MS Word 2010, и мне нужно преобразовать их из формата страницы Letter в A4. Есть ли простой способ сделать это? Возможно, какой-нибудь сценарий PowerShell в сочетании с API-интерфейсом MS Word?

2 ответа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()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .