Salvar o Documento do Word incorporado como PDF
CENÁRIO
Um documento do Word está incorporado no arquivo do Excel 2011. Eu preciso salvá-lo como um pdf.
Se fosse o Excel 2010, então não teria sido um problema, pois o MS-Office no Win Pcs suporta automação OLE.
O que eu tentei?
Este é o código que eu tentei no Excel 2010, que funciona.
<code>Option Explicit Sub Sample() Application.ScreenUpdating = False Dim shp As Shape Dim objWord As Object Dim objOLE As OLEObject Set shp = Sheets("Sheet1").Shapes("Object 1") shp.OLEFormat.Activate Set objOLE = shp.OLEFormat.Object Set objWord = objOLE.Object objWord.ExportAsFixedFormat OutputFileName:= _ "C:\Users\Siddharth Rout\Desktop\Sid.pdf", ExportFormat:= _ 17, OpenAfterExport:=True, OptimizeFor:= _ 0, Range:=0, From:=1, To:=1, _ Item:=0, IncludeDocProps:=True, KeepIRM:=True, _ CreateBookmarks:=0, DocStructureTags:=True, _ BitmapMissingFonts:=True, UseISO19005_1:=False objWord.Application.Quit Set objWord = Nothing Set shp = Nothing Set objOLE = Nothing Application.ScreenUpdating = True End Sub </code>
Obviamente não posso usar o mesmo no MAC. Não que eu não tenha tentado isso no MAC ... eu fiz: - / (Natureza humana básica, eu acho?). Ele falhou como esperado. :)
Para o Excel 2011, eu tentei isso. Ele funciona, mas não cria um pdf nem gera uma mensagem de erro. Eu tentei depurar isso, mas sem alegria.
<code>'~~> Reference set to MS Word Object Library Option Explicit Sub Sample() Dim oWord As Word.Application, oDoc As Word.Document Application.ScreenUpdating = False Sheets("Sheet1").Shapes.Range(Array("Object 1")).Select Selection.Verb Verb:=xlPrimary Set oWord = GetObject(, "word.application") For Each oDoc In oWord.Documents Debug.Print oDoc.FullName & ".pdf" oDoc.SaveAs Filename:=oDoc.FullName & ".pdf", FileFormat:=wdFormatPDF oDoc.Close savechanges:=False Next oDoc oWord.Quit Set oworddoc = Nothing Set oWord = Nothing Application.ScreenUpdating = True End Sub </code>
Eu acredito que isso também pode ser feito usando o AppleScript. Então eu testei com o Applescript também. Aqui estou tentando converter um documento do word diretamente em pdf. Se eu conseguir essa parte, posso fazer um pequeno desvio no meu código :)
<code>Sub tester() Dim scriptToRun As String scriptToRun = "set pdfSavePath to " & Chr(34) & "Users:siddharth:Documents:Sid.pdf" & Chr(34) & Chr(13) scriptToRun = scriptToRun & "set theDocFile to choose file with prompt " & Chr(34) & "Please select a Word document file:" & Chr(34) & Chr(13) scriptToRun = scriptToRun & "tell application " & Chr(34) & "Microsoft Word" & Chr(34) & Chr(13) scriptToRun = scriptToRun & "open theDocFile" & Chr(13) scriptToRun = scriptToRun & "set theActiveDoc to the active document" & Chr(13) scriptToRun = scriptToRun & "save as theActiveDoc file format format PDF file name pdfSavePath" & Chr(13) scriptToRun = scriptToRun & "end tell" & Chr(13) Debug.Print scriptToRun 'Result = MacScript(scriptToRun) 'MsgBox Result End Sub </code>
No entanto, recebo o erro de tempo de execuçãoMacScript(scriptToRun)
então, tenho certeza de que meu Applescript está falhando.
INSTANTÂNEO
Erro de maquete
QUESTÃO
Como posso salvar o documento do Word incorporado no Excel 2011? Estou aberto ao VBA e ao Applescript.