我有一个Acrobat .pdf文档,其中包含一个Javascript全局变量。我试图在VBA中获得代码,它将引用来自Acrobat的全局值,但我无法完全弄清楚这样做的必要语法。我认为这是一个非常简单的问题,但它却让我难堪。通过Excel VBA引用Acrobat Javascript全局变量所需的语法是什么?
基本上,我的Acrobat/.PDF文件中,我有一些非常简单的Javascript定义:
global.ReturnString = "Arbitrary String";
,然后我还有一个非常简单的按钮,显示返回的字符串作为一个应用程序警告:
app.alert(global.ReturnString);
我想要做的就是能够通过Excel消息框重现这个非常简单的功能。换句话说,我只想写一些工作VBA代码,将成功地在Excel中执行此:
MsgBox (SomeSortOfPointerToAcrobat.Global.ReturnString)
到目前为止,我还没有能够得到这个工作。我试过使用GetJSObject作为构造在Acrobat和Excel之间传递信息(下面的VBA代码)。我目前在我试图引用在Excel VBA JavaScript的全局变量的时候打开.pdf文件在Excel用户窗体:
Dim gAPP As Acrobat.CAcroApp
Dim gPDDOC As Acrobat.CAcroPDDoc
Dim jso As Object
Set gAPP = CreateObject("AcroExch.App")
Set gPDDOC = CreateObject("AcroExch.PDDoc")
If gPDDOC.Open("C:\path\testdoc.pdf") Then
Set jso= gPDDOC.GetJSObject
MsgBox (jso.Global.ReturnString)
End If
但这总是会导致运行时错误“438”:对象不支持此属性或方法。
我已将Adobe Acrobat 10.0类型库添加到我的VBA项目中。
有什么建议吗?
再次,我为我所认为的一个非常微不足道的问题表示歉意。我很高兴根据需要澄清我在这个问题的描述中遗漏的任何所需细节。
我讨厌土坯。我认为你的代码是准确的,但可能需要仔细检查[here](http://help.adobe.com/livedocs/acrobat_sdk/9/Acrobat9_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm?href=IAC_DevApp_OLE_Support。 100.13.html&访问= TRUE)。 – findwindow
@findwindow你是对的,谢谢!经过多次搜索之后,我意识到在这种情况下,代码的JSO部分实际上没问题。我的实际问题与定义全局变量的代码的位置有关。它在Acrobat中没有问题,但是当我尝试通过VBA执行相同的操作时,该代码没有被调用(所以全局实际上并没有被定义),而这是我特殊问题的原因,而不是getJSObject语法正如我最初所相信的。 –