Wie konvertiere ich MS Word-Dateien stapelweise von der Seitengröße Letter in A4?

Wie konvertiere ich MS Word-Dateien stapelweise von der Seitengröße Letter in A4?

Ich habe eine Reihe von MS Word 2010-Dokumenten und muss sie von der Seitengröße Letter in A4 konvertieren. Gibt es eine einfache Möglichkeit, das zu tun? Möglicherweise ein PowerShell-Skript in Kombination mit einer MS Word-API?

Antwort1

Hier ist etwas VBA, das Sie als Makro hinzufügen können, um alle Word-Dokumente in einem bestimmten Ordner zu ändern.

WARNUNG: Erstellen Sie eine Sicherungskopie Ihrer Dateien, bevor Sie diesen Code ausführen.

Öffnen Sie ein neues Word-Dokument und fügen Sie diesen Code in das VBA-Fenster ( Alt+ F11) ein. Nehmen Sie die erforderlichen Änderungen am Pfad vor und schließen Sie dann das Fenster.

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

Öffnen Sie das Makrofenster ( Alt+ F8) ChangePaperSize, wählen Sie und klicken Sie dann auf Ausführen. Das aktuell geöffnete Dokument wird geschlossen und andere Dokumente werden geöffnet und geschlossen, während die Änderungen an jedem Dokument im Ordner vorgenommen werden.

Antwort2

PowerShell-Version basierend auf der Antwort von 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()

verwandte Informationen