VBA通过邮件将嵌入式OLE PDF发送到:

VBA通过邮件将嵌入式OLE PDF发送到:,vba,pdf,excel,ole,Vba,Pdf,Excel,Ole,问题: 将PDF嵌入Excel工作簿。 此PDF是一个带有“发送到邮件收件人”按钮的反馈表单。 如果不将其嵌入Excel发送工作,则嵌入的发送会导致Excel崩溃 我的想法是打开OLEObject,暂时保存嵌入的PDF,关闭OLEObject 并打开保存的PDF,使其在Acrobat实例中运行。 使用以下方法打开对象已起作用: ThisWorkbook.Sheets(SheetName).Shapes(OLE_Name).Select Selection.Verb Verb:=xlOpen 但

问题: 将PDF嵌入Excel工作簿。 此PDF是一个带有“发送到邮件收件人”按钮的反馈表单。 如果不将其嵌入Excel发送工作,则嵌入的发送会导致Excel崩溃

我的想法是打开OLEObject,暂时保存嵌入的PDF,关闭OLEObject 并打开保存的PDF,使其在Acrobat实例中运行。 使用以下方法打开对象已起作用:

ThisWorkbook.Sheets(SheetName).Shapes(OLE_Name).Select
Selection.Verb Verb:=xlOpen
但我正在努力完成以下步骤。 如何做到这一点? 可能的其他方式


WIN7,Office 2010,Acrobat Reader

确定。众所周知,对象很难使用。我做了一些搜索,因为似乎很难相信这是不支持的。这是我第一次尝试使用
Shell
命令复制OLE并将其粘贴到已知目录

但是,您不能复制/粘贴PDF嵌入对象,这意味着您不能使用
Shell
命令将其复制/粘贴到临时文件夹/文件路径。所以那是行不通的

人们的共识似乎是,这实际上是不可能的;使用嵌入式PDF所能做的就是打开它们。请参阅和,其中引用此PDF说明:

请参阅OLE自动化下的“AxAcroPDFLib.AxAcroPDF”部分。这些是您可以从Reader获得的唯一方法

还有:

您所做的工作依赖于您知道如何与特定类交互,如果您只有几个类型,并且知道它们是什么,那么这可能是正常的,但一般来说,除非(a)该类支持自动化,并且(b)您知道发出此命令的命令无法工作

该类并不真正支持您所希望的那种自动化

可能的解决方案

使用Acrobat和WinAPI


如果您安装了Acrobat,那么我相信您可以使用WinAPI获取Acrobat实例的hWnd,并以这种方式进行控制,但是我没有Acrobat,因此无法进行测试。

您是否只是将PDF作为附件发送?是否有任何理由需要在发送之前打开PDF?嵌入的PDF是一种反馈表单。我之所以想打开它,是因为用户应该在发送之前填写一些数据。发送功能集成到PDF中,并将PDF作为邮件附件发送。OK。众所周知,对象很难使用。我曾经有一些代码试图对XML/文本文件执行类似的操作,但它对这种类型的文件不起作用,而且似乎对PDF也不起作用。Acrobat支持一些自动化,但不太支持。我会看看我能不能想出点办法。仅供参考,这个。为什么需要将此文件嵌入Excel工作簿中?这似乎不是非常可靠的存储/传输文件和数据的方法。