Como converter em lote arquivos do MS Word de tamanho de página Carta para A4?

Como converter em lote arquivos do MS Word de tamanho de página Carta para A4?

Eu tenho vários documentos do MS Word 2010 e preciso convertê-los do tamanho de página Carta para A4. Existe uma maneira simples de fazer isso? Possivelmente algum script do PowerShell combinado com alguma API do MS Word?

Responder1

Aqui estão alguns VBA que você pode adicionar como uma macro para alterar todos os documentos do Word em uma determinada pasta.

AVISO: Faça uma cópia de backup dos seus arquivos antes de executar este código.

Abra um novo documento do Word, cole este código na janela do VBA ( Alt+ F11). Faça as alterações necessárias no caminho e feche a janela.

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

Abra a janela Macro ( Alt+ F8) e escolha ChangePaperSizee clique em executar. O documento atualmente aberto será fechado e outros documentos serão abertos e fechados à medida que forem feitas alterações em cada documento da pasta.

Responder2

Versão do PowerShell baseada na resposta do 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()

informação relacionada