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

1

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

    
por Borek Bernard 27.09.2012 / 11:50

2 respostas

5

Aqui está um 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 de 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 ), escolha ChangePaperSize e clique em executar. O documento aberto atual será fechado e outros documentos serão abertos e fechados à medida que fizer as alterações em cada documento na pasta.

    
por 27.09.2012 / 15:27
1

Versão do PowerShell com base 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()
    
por 27.09.2012 / 21:03