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