将嵌入的 Word 文档另存为 PDF [英] Save embedded Word Doc as 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屋!