2012-05-09 14 views
7

SCENARIOएम्बेडेड वर्ड डॉक्टर पीडीएफ के रूप में सहेजें

एक शब्द दस्तावेज़ Excel 2011 फ़ाइल में एम्बेडेड है। मुझे इसे पीडीएफ के रूप में सहेजने की ज़रूरत है।

यह एक्सेल 2010 था, तो यह कोई समस्या नहीं होगी क्योंकि विन पीसी में एमएस-ऑफिस ओएलई स्वचालन का समर्थन करता है।

मैंने क्या किया है?

यह वह कोड है जिसे मैंने एक्सेल 2010 में करने की कोशिश की जो काम करता है।

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 

स्पष्ट रूप से मैं मैक में इसका उपयोग नहीं कर सकता। ऐसा नहीं है कि मैंने मैक में यह कोशिश नहीं की ... मैंने किया: -/(मूल मानव प्रकृति मुझे लगता है?)। यह उम्मीद के रूप में विफल रहा। :)

एक्सेल 2011 के लिए, मैंने कोशिश की। यह काम करता है लेकिन एक पीडीएफ नहीं बनाता है और न ही यह कोई त्रुटि संदेश देता है। मैंने इसे डीबग करने की कोशिश की लेकिन कोई खुशी नहीं।

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

मेरा मानना ​​है कि यह ऐप्पलस्क्रिप्ट का उपयोग करके भी किया जा सकता है। तो मैंने एप्पलस्क्रिप्ट के साथ भी परीक्षण किया। यहां मैं सीधे एक शब्द दस्तावेज़ को पीडीएफ में बदलने की कोशिश कर रहा हूं। यदि मैं यह हिस्सा मिलता है तो मैं अपने कोड में एक छोटा सा चक्कर ले जा सकते हैं :)

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 

हालांकि मैं MacScript(scriptToRun) पर रनटाइम त्रुटि मिल तो मुझे यकीन है कि मेरी Apple स्क्रिप्ट विफल हो रहा है कर रहा हूँ।

स्नैपशॉट

enter image description here

Apple स्क्रिप्ट त्रुटि

enter image description here

प्रश्न

मैं Excel 2011 में एम्बेडेड शब्द दस्तावेज़ कैसे बचा सकते हैं? मैं वीबीए और एप्पलस्क्रिप्ट के लिए खुला हूं।

+1

+ 1 अच्छी तरह से समझाया गया प्रश्न के लिए। मेरे पास मैक नहीं है लेकिन देखें कि यह लिंक मदद करता है या नहीं? शायद आप पहले स्क्रिप्ट को APPLESCRIPT में आजमा सकते हैं? http://homepage.mac.com/swain/Macinchem/Applescript/AppScript_tut/AppScrip_tut_1/appscript_tut_1.htm –

+1

धन्यवाद प्रदीप। मैंने अपने मैक की जांच की लेकिन एप्लिकेशन फ़ोल्डर में एप्पलस्क्रिप्ट नामक फ़ोल्डर नहीं मिला। शायद मुझे इसे डाउनलोड करने की ज़रूरत है? मुझे सेब स्टोर की जांच करने दो। –

+1

@ प्रदीप कुमार: दिशा के लिए धन्यवाद। वास्तव में मदद की। –

उत्तर

5

ठीक है, मैं शापित हो जाऊंगा!

धन्यवाद आपके सुझाव के लिए प्रदीप। ऐसा लगता है कि आप जिस एप्लिकेशन का जिक्र कर रहे थे वह नए मैक संस्करणों के साथ अप्रचलित है। इसलिए मैंने मैक स्टोर की खोज की और SMILE नामक एक और एप्लीकेशन मिला।

मैंने SMILE में मूल स्क्रिप्ट का परीक्षण किया। इसके साथ कुछ भी गलत नहीं था और यह पूरी तरह से काम किया !!!

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 

तो मैं कोड है जो कि मैंने पहले परीक्षण किया गया था की कोशिश की और मेरे आश्चर्य करने के लिए, इसके बिना मुझे मूल कोड में कोई भी परिवर्तन करने से इस समय काम किया !!! तो मैं इस समस्या पर फंस गया हूं कि समस्या क्या हो सकती है ... क्या Smile कुछ ऐसा स्थापित किया गया जो स्क्रिप्ट को एक्सेल में काम करता है? मुझे लगता है कि मैं कभी नहीं पता लगाऊंगा।

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 

मुस्कान स्नैपशॉट

enter image description here

संपादित करें: त्रुटि

करीब निरीक्षण पर पाया, मैंने पाया कि मेरी मूल स्क्रिप्ट एक अतिरिक्त पंक्ति थी। मैं पीडीएफ पथ दो बार स्थापित कर रहा था। स्नैपशॉट में देखा जा सकता है।

+1

मेरी एकमात्र चिंता यह है कि अगर मेरा संदेह सही है कि एक्सेल कोड केवल इसलिए काम करता है क्योंकि मैंने SMILE स्थापित किया है तो यह एक समस्या है। ऐसे परिदृश्य में, यदि मैं अपना कोड वितरित करना चाहता हूं तो यह काम नहीं करेगा क्योंकि उपयोगकर्ता मैक में SMILE नहीं हो सकता है। क्या कोई मैक (एक्सेल 2011 के साथ) मेरे ऊपर उपरोक्त कोड का परीक्षण कर सकता है? –

+0

+ 1 इसे स्वयं हल करने के लिए :) –

+0

+1 स्वयं को हल करने का अच्छा स्पष्टीकरण – brettdj