Сохранить встроенный Word Doc как PDF

СЦЕНАРИЙ

Документ Word встроен в файл Excel 2011. Мне нужно сохранить его в формате 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 не работает.

СНАПШОТ

Ошибка Applescript

ВОПРОС

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

1 ответ

Решение

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

Спасибо Прадипу за ваше предложение. Похоже, что приложение, на которое вы ссылались, устарело с новыми версиями 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

УЛЫБКА СНИМКА

РЕДАКТИРОВАТЬ: НАЙТИ ОШИБКУ

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

Другие вопросы по тегам