2012-05-09 15 views
7

SZENARIOSpeicher eingebettete Word Doc als PDF

ein Word-Dokument wird in Excel 2011-Datei eingebettet. Ich muss es als pdf speichern.

Wenn es Excel 2010 gewesen wäre, dann wäre es kein Problem gewesen, da MS-Office in Win Pcs OLE-Automatisierung unterstützt.

WAS HABE ICH VERSUCHT?

Dies ist der Code, den ich in Excel 2010 versuchte, die funktioniert.

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 

Natürlich kann ich nicht das gleiche in MAC verwenden. Nicht, dass ich das nicht in MAC versucht habe ... Ich tat: -/(Grundlegende menschliche Natur, denke ich?). Es ist gescheitert wie erwartet. :)

Für Excel 2011 habe ich dies versucht. Es funktioniert, aber erstellt weder eine PDF noch gibt es irgendeine Fehlermeldung. Ich habe versucht es zu debuggen aber keine Freude.

'~~> 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 

Ich glaube, das kann auch mit AppleScript getan werden. Also habe ich auch mit Applescript getestet. Hier versuche ich ein Word-Dokument direkt in PDF zu konvertieren. Wenn ich diesen Teil bekommen, dann kann ich einen kleinen Umweg in meinem Code nehmen :)

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 

Jedoch habe ich den Laufzeitfehler auf MacScript(scriptToRun) so bin ich sicher, dass meine Apple versagt.

SCHNAPPSCHUSS

enter image description here

Apple Fehler

enter image description here

FRAGE

Wie kann ich das eingebettete Word-Dokument in Excel 2011 speichern? Ich bin offen für VBA und Applescript.

+1

+ 1 Für schön erklärte Frage. Ich habe keinen MAC, aber sehen Sie, ob dieser Link hilft? Vielleicht können Sie das Skript zuerst in APPLESCRIPT ausprobieren? http://homepage.mac.com/swain/Macinchem/Applescript/AppScript_tut/AppScrip_tut_1/appscript_tut_1.htm –

+1

Danke Pradeep. Ich habe meinen MAC überprüft, konnte aber im Ordner Programme keinen Ordner namens Applescript finden. Vielleicht muss ich es herunterladen? lass mich Apfelladen überprüfen. –

+1

@ PradeepKumar: Danke für die Richtung. Das hat wirklich geholfen. –

Antwort

5

Nun, ich werde verdammt sein!

Danke Pradeep für Ihren Vorschlag. Scheint so, als ob die Anwendung, auf die du dich beziehst, mit neuen MAC Versionen veraltet ist. Also suchte ich im MAC Store und fand eine andere Anwendung namens SMILE.

Ich testete das Original Skript in in SMILE. Es war nichts falsch daran und es hat perfekt funktioniert !!!

set pdfSavePath to "Users:siddharth:Documents:Sid.pdf" 
set theDocFile to choose file with prompt "Please select a Word document file:" 
tell application "Microsoft Word" 
    open theDocFile 
    set theActiveDoc to the active document 
    save as theActiveDoc file format format PDF file name pdfSavePath 
end tell 

Also habe ich versucht, den Code, den ich früher testete und zu meiner Überraschung war es diesmal ohne mich jede Änderung an den ursprünglichen Code machen !!! Also bin ich ratlos, was könnte das Problem sein ... Hat Smile etwas installiert, das das Skript in Excel funktioniert? Ich schätze, ich werde es nie herausfinden.

Option Explicit 

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 

SMILE SCHNAPPSCHUSS

enter image description here

EDIT:

Bei genauerem Hinsehen der Fehler gefunden, fand ich, dass meine ursprüngliche Skript eine zusätzliche Zeile hatte. Ich habe den PDF-Pfad zweimal eingestellt. Kann im Schnappschuss gesehen werden.

+1

Meine einzige Sorge ist, dass, wenn mein Verdacht richtig ist, dass der Excel-Code nur funktioniert, weil ich SMILE installiert habe, dann ist es ein Problem. In einem solchen Szenario wird es nicht funktionieren, wenn ich meinen Code verteilen möchte, da die Benutzer-MAC möglicherweise nicht über SMILE verfügt. Kann jemand mit einem MAC (mit Excel 2011) den obigen Code für mich testen? –

+0

+ 1 für die Lösung selbst :) –

+0

+1 gute Erklärung des Selbst zu lösen – brettdj