Come convertire in batch i file MS Word dalla dimensione della pagina Letter in A4?


1

Ho un sacco di documenti di MS Word 2010 e ho bisogno di convertirli dalla dimensione della pagina Letter in A4. C'è un modo semplice per farlo? Forse qualche script PowerShell combinato con alcune API di MS Word?

Risposte:


5

Ecco alcuni VBA che puoi aggiungere come macro per cambiare tutti i documenti di Word in una determinata cartella.

AVVISO: eseguire una copia di backup dei file prima di eseguire questo codice.

Apri un nuovo documento di Word, incolla questo codice nella finestra VBA ( alt + F11 ). Apportare le modifiche necessarie al percorso, quindi chiudere la finestra.

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

Apri la finestra Macro ( alt + F8 ) e scegliere ChangePaperSize, quindi fai clic su Esegui. Il documento aperto corrente si chiuderà e altri documenti si apriranno e si chiuderanno mentre apporta le modifiche a ciascun documento nella cartella.


Eccellente, grazie, mi ha dato abbastanza indizi per scrivere la stessa cosa in PowerShell (che trovo più facile da usare). Pubblicherà il codice come risposta separata.
Borek Bernard

Grande. Felice di aiutare.
CharlieRB

C'è stato un feedback (cancellato dalla recensione) che "Documents.Close ..." deve essere commentato o la macro si fermerebbe con la chiusura del documento. Altrimenti tutto funziona bene e OP ti ha ringraziato per questo.
guest-vm

1

Versione di PowerShell basata sulla risposta di 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()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.