我有一個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語法正如我最初所相信的。 –