2012-05-09 2 views
7

СЦЕНАРИЙСохранить внедренный Word Doc в PDF

Слово документ встраивается в 2011 файл Excel. Мне нужно сохранить его как pdf.

Если бы это был Excel 2010, тогда это не было бы проблемой, поскольку MS-Office в Win Pcs поддерживает автоматизацию OLE.

ЧТО ТАКОЕ ТРИУМ?

Это код, который я пробовал в Excel 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 

Очевидно, что я не могу использовать то же самое в MAC. Не то чтобы я не пробовал это в MAC ... Я сделал: -/(Основная человеческая натура, я думаю?). Он потерпел неудачу, как ожидалось. :)

Для Excel 2011 я пробовал это. Он работает, но не создает PDF-файл, и не дает никакого сообщения об ошибке. Я попробовал отладить его, но без радости.

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

Я считаю, что это также можно сделать с использованием AppleScript. Поэтому я тоже тестировал Applescript. Здесь я пытаюсь преобразовать текстовый документ непосредственно в pdf. Если я получаю эту часть, то я могу взять небольшой крюк в моем коде :)

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) поэтому я уверен, что мой Applescript не удается.

СНАПШОТ

enter image description here

Applescript Ошибка

enter image description here

ВОПРОС

Как я могу сохранить встроенный текстовый документ в Excel 2011? Я открыт для VBA и Applescript.

+1

+ 1 Для приятного объяснения вопроса. У меня нет MAC, но посмотрите, помогает ли эта ссылка? Может быть, вы можете попробовать сценарий сначала в APPLESCRIPT? http://homepage.mac.com/swain/Macinchem/Applescript/AppScript_tut/AppScrip_tut_1/appscript_tut_1.htm –

+1

Спасибо Pradeep. Я проверил свой MAC, но не смог найти папку под названием Applescript в папке Applications. Может быть, мне нужно скачать его? позвольте мне проверить магазин Apple. –

+1

@PradeepKumar: Спасибо за направление. Это действительно помогло. –

ответ

5

Ну, я буду проклят!

Благодарим Pradeep за ваше предложение. Похоже, что приложение, о котором вы говорили, устарело с новыми версиями MAC. Поэтому я искал MAC Store и нашел другое приложение под названием 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 установить что-то, что заставило скрипт работать в Excel? Думаю, я никогда не узнаю.

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 СНАПШОТ

enter image description here

EDIT: обнаружена ошибка

При ближайшем рассмотрении, я обнаружил, что мой первоначальный сценарий был дополнительную строку. Я дважды задавал путь PDF. Можно увидеть в снимке.

+1

Моя единственная проблема заключается в том, что если мое подозрение верно, что код Excel работал только потому, что я установил SMILE, это проблема. В таком случае, если я хочу распространять свой код, тогда он не будет работать, поскольку пользовательский MAC-адрес может не иметь SMILE. Может ли кто-нибудь с MAC (с Excel 2011) проверить код выше для меня? –

+0

+ 1 для решения этого самостоятельно :) –

+0

+1 хорошее объяснение проблемы самостоятельно – brettdj

Смежные вопросы