在Microsoft Surface(Excel VBA)上运行GetJSObject时失败

GetJSObject fails when run on Microsoft Surface (Excel-VBA)

本文关键字:运行 GetJSObject 失败 VBA Microsoft Surface Excel      更新时间:2023-09-26

我在Excel VBA中编写了一个小型实用程序,它还可以在几个单独的.pdf文件中与Acrobat Javascript交互。

该代码经过了广泛的测试,并在我的台式电脑上完全按照预期运行。然而,我最终需要在Microsoft Surface平台上实现该代码。当我试图在Microsoft Surface上从Excel文件中运行相同的代码时,代码会阻止任何使用"GetJSObject"的行

例如。以下操作在我的电脑上运行良好,但在我的Surface上导致"不支持对象或方法"错误。

Set gAPP = CreateObject("AcroExch.App")
Set gPDDOC = CreateObject("AcroExch.PDDoc")
If gPDDoc.Open(pdfFileName) Then Set jso = gPDDOC.GetJSObject

到目前为止,我已经能够在网上找到一些提示,GetJSObject在64位环境中不能很好地工作,我的Surface运行64位Windows10和32位Excel。

然而,我不认为仅凭这一点就可以解释两台机器行为的差异;我的桌面运行的是64位Windows7和32位Excel,一切都按预期运行。

我应该在哪里帮助发现问题的根源(和解决方案)?

EDIT/UPDATE:getJSObject语句实际上按预期工作,IF在运行VBA代码之前,我采取了在Acrobat中手动打开一个相关.pdf文件副本的额外步骤。我认为这意味着,相对于我的电脑,在Surface上工作的是对象定义(例如Set gAPP = CreateObject("AcroExch.App")),而不是最初认为的getJSObject命令?

到目前为止,我还不清楚这是怎么回事(更不用说我如何解决这个问题了)。

不确定这个问题是否得到了回答,但我会采取两种行动进行研究:

1.

看看你是否可以使用在没有构造函数的情况下启动它

Set AcroApp = New AcroApp

而不是

Set AcroApp = CreateObject("AcroExch.App")

2.

确保你使用的是相同版本的acrobat,根据我的研究,这个错误发生在谷歌搜索查询的第一个结果:

createobject acroexch.app error 429
You cannot do this with Adobe Reader, you need Adobe Acrobat.

此OLE接口可用于Adobe Acrobat,而不是Adobe Reader。