2016-03-01 73 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

(標記爲回答讓這不再顯示爲一個開放的問題)

答:代碼,事實上,正確的,因爲,在原來的問題。