将嵌入的 Word 文档另存为 PDF [英] Save embedded Word Doc as PDF

查看:33
本文介绍了将嵌入的 Word 文档另存为 PDF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

场景

Word 文档嵌入在 Excel 2011 文件中.我需要将其另存为 pdf.

A word document is embedded in Excel 2011 file. I need to save it as a pdf.

如果是 Excel 2010 那么它就不会成为问题,因为 Win Pcs 中的 MS-Office 支持 OLE 自动化.

Had it been Excel 2010 then it wouldn't have been a problem as MS-Office in Win Pcs support OLE automation.

我尝试了什么?

这是我在 Excel 2010 中尝试过的代码,它有效.

This is the code that I tried in Excel 2010 which works.

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 中尝试过这个……我尝试过:-/(我猜是基本的人性?).它按预期失败了.:)

Obviously I cannot use the same in MAC. Not that I didn't try this in MAC... I did :-/ (Basic human nature I guess?). It failed as expected. :)

对于 Excel 2011,我试过了.它可以工作,但不会创建 pdf,也不会给出任何错误消息.我试过调试它,但没有任何乐趣.

For Excel 2011, I tried this. It works but doesn't create a pdf nor does it give any error message. I tried debugging it but no joy.

'~~> 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 进行了测试.在这里,我试图将 word 文档直接转换为 pdf.如果我得到这部分,那么我可以在我的代码中绕一小段路:)

I believe this can also be done using AppleScript. So I tested with Applescript as well. Here I am trying to convert a word document directly to pdf. If I get this part then I can take a small detour in my code :)

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 失败了.

However I get the runtime error on MacScript(scriptToRun) so I am sure that my Applescript is failing.

快照

Applescript 错误

Applescript Error

问题

如何在 Excel 2011 中保存嵌入的 Word 文档?我对 VBA 和 Applescript 持开放态度.

How can I save the embedded word doc in Excel 2011? I am open to VBA and Applescript.

推荐答案

好吧,我会死的!

感谢普拉迪普的建议.似乎您所指的应用程序在新的 MAC 版本中已经过时了.于是我搜索了 MAC 商店,发现了另一个名为 SMILE 的应用程序.

Thanks Pradeep for your suggestion. Seems like the application that you were referring to is obsolete with new MAC versions. So I searched the MAC Store and found another application called SMILE.

我在 SMILE 中测试了 原始 脚本.它没有任何问题,而且效果很好!!!

I tested the original script in in SMILE. There was nothing wrong with it and it worked perfectly!!!

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 中工作的东西?我猜我永远也不会发现.

So I tried the code which I was testing earlier and to my surprise, it worked this time without me making any change to the original code!!! So I am stumped on what could be the problem... Did Smile install something which made the script work in Excel? Guess I will never find out.

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 路径.可以在快照中看到.

On closer inspection, I found that my original script had an extra line. I was setting the PDF path twice. Can be seen in the snapshot.

这篇关于将嵌入的 Word 文档另存为 PDF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆