Wie konvertiere ich MS Word-Dateien im Stapel von Letter in A4?

1

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

Borek Bernard
quelle

Antworten:

5

Im Folgenden finden Sie einige VBA-Dateien, die 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, fügen Sie diesen Code in das VBA-Fenster ein ( Alt+ F11). Nehmen Sie die erforderlichen Änderungen am Pfad vor und schließen Sie 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) und wählen Sie ChangePaperSizeund klicken Sie 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.

CharlieRB
quelle
Ausgezeichnet, danke, das gab mir genug Hinweise, um dasselbe in PowerShell zu schreiben (was ich einfacher zu benutzen finde). Sendet den Code als separate Antwort.
Borek Bernard
Großartig. Froh, dass ich Helfen kann.
CharlieRB
Es gab eine Rückmeldung (durch Überprüfung gelöscht), dass "Documents.Close ..." auskommentiert werden muss, sonst würde das Makro mit dem Schließen des Dokuments aufhören. Ansonsten funktioniert alles einwandfrei und OP hat Ihnen dafür seinen Dank ausgesprochen.
guest-vm
1

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()
Borek Bernard
quelle