2016-03-01 140 views
2

我有一个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项目中。

有什么建议吗?

再次,我为我所认为的一个非常微不足道的问题表示歉意。我很高兴根据需要澄清我在这个问题的描述中遗漏的任何所需细节。

+1

我讨厌土坯。我认为你的代码是准确的,但可能需要仔细检查[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

+0

@findwindow你是对的,谢谢!经过多次搜索之后,我意识到在这种情况下,代码的JSO部分实际上没问题。我的实际问题与定义全局变量的代码的位置有关。它在Acrobat中没有问题,但是当我尝试通过VBA执行相同的操作时,该代码没有被调用(所以全局实际上并没有被定义),而这是我特殊问题的原因,而不是getJSObject语法正如我最初所相信的。 –

回答

0

(标记为回答让这不再显示为一个开放的问题)

答:代码,事实上,正确的,因为,在原来的问题。