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?
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?
Antworten:
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 ChangePaperSize
und 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.
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()