2012-05-09 18 views
7

SENARYOPDF olarak gömülü Word Doc kaydet

bir word belgesi, Excel 2011 dosyasına yerleştirilmiştir. Bir pdf olarak kaydetmem gerekiyor.

Excel 2010 olmuş olsaydı, o zaman Win Pcs desteği MS Office OLE otomasyonu olarak bir sorun olmazdı.

NEDEN NASIL TR?

Bu, Excel 2010'da çalıştığım kod olan bir koddur.

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 

Açıkçası ben MAC aynı kullanamazsınız. Bunu MAC'da denemedim değil ... Yaptım: -/(Temel insan doğası sanırım?). Beklendiği gibi başarısız oldu. :)

Excel 2011 için bunu denedim. Çalışır, ancak pdf oluşturmaz ve herhangi bir hata mesajı vermez. Hata ayıklamayı denedim ama neşe yok.

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

Bunun AppleScript kullanarak da yapılabileceğine inanıyorum. Ben de Applescript ile test ettim. Burada bir kelime belgesini doğrudan pdf'ye dönüştürmeye çalışıyorum. Bu bölümü alırsanız o zaman benim kodunda küçük bir yoldan alabilir :) Ben MacScript(scriptToRun) üzerinde çalışma zamanı hatası olsun Ancak

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 

yüzden benim AppleScript başarısız olduğunu eminim.

ANLıK

enter image description here

AppleScript Hata

enter image description here

nasıl 2011 Excel'de gömülü kelime doc kaydedebilir SORU? VBA ve Applescript’e açıkım.

+1

+ 1 Güzel bir şekilde açıklanmış soru için. MAC'ım yok, ancak bu bağlantının işe yarayıp yaramadığını görüyor musunuz? Belki de betiği önce APPLESCRIPT'de deneyebilirsiniz? http://homepage.mac.com/swain/Macinchem/Applescript/AppScript_tut/AppScrip_tut_1/appscript_tut_1.htm –

+1

Teşekkürler Pradeep. MAC'ımı kontrol ettim ama Uygulamalar klasöründe Applescript adlı bir klasör bulamadım. Belki indirmem gerekiyor mu? Elma dükkanını kontrol edeyim. –

+1

@PradeepKumar: Yön için teşekkürler. Bu gerçekten yardımcı oldu. –

cevap

5

Eh, lanetleneceğim!

Öneriniz için teşekkürler Pradeep. Başvuruda bulunduğunuz uygulama yeni MAC sürümleri ile eski gibi görünüyor. Bu yüzden MAC Store'u aradım ve SMILE adlı başka bir uygulama buldum.

SMILE içinde özgün komut dosyasını test ettim. Onunla yanlış bir şey yoktu ve mükemmel çalıştı!

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 

Ben de daha önce test edilmiş kod çalıştı ve benim için sürpriz, benim özgün kodunda herhangi bir değişiklik yapmadan bu sefer çalıştı !!! Bu yüzden sorun ne olabilir üzerinde güldüm ... Smile komut dosyasını Excel'de çalıştıran bir şey mi kurdunuz? Sanırım asla öğrenemeyeceğim.

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 

GÜLÜMSEME SNAPSHOT

enter image description here

DÜZENLEME: HATA Yakından bakıldığında

BULUNAMADI, benim özgün senaryo fazladan bir çizgi olduğunu bulmuşlardır. PDF yolunu iki kere ayarlıyordum. Anlık görüntüde görülebilir.

+1

Tek endişem şüphem şuydu eğer Excel Kodu sadece SMILE yüklediğim için çalıştıysa o zaman sorun. Böyle bir senaryoda, kodumu dağıtmak istersem, MAC kullanıcısı SMILE olmayabilir diye çalışmayacaktır. Bir MAC (Excel 2011 ile) olan birisi benim için yukarıdaki kodu test edebilir mi? –

+0

+ 1 Bunu kendi kendinize çözmeniz için :) –

+0

+1 öz çözmenin iyi bir açıklaması – brettdj