我还有一个访问-vba应用程序,也使用Word-VBA。在我的本地计算机上运行应用程序时,它很好地运行。一旦它移动到其他人(相同版本的访问和Word),它将在涉及到WORD的VBA部分时崩溃。命令如document.open或.saveas2失败:例如,Method 'SaveAs2' of object failed

我还注意到,任何其他最终用户都需要在申请中引用的库。我习惯于与图书馆编译,从那时起,它们始终包含在.jar / .exe /等中,但是,当您将应用程序移动到其他计算机时,它始终尝试重新编译?

我不在VBA中精通,所以我推测我的失败Word-VBA函数是因为引用错误,任何其他想法?

有帮助吗?

解决方案

VBA可以引用的“库”实际上是 com对象,通常打包为dll文件。它们是在请求时在运行时动态实例化的对象(如果它们不在)。它们由Windows加载到内存中,您的程序使用COM标准与它们进行交互,调用方法和获取或设置属性(进程间通信)。通常存在两种与它们相互作用的方式:早期结合和晚期结合。

具有早期绑定,您在仍在编写代码时对库添加引用,这允许VBA IDE提供自动完成和某些编译时错误检查。您将对象实例化“新建”关键字,并通过直接键入对象名称。但是,早期绑定要求您选择特定的DLL,并且可能是接口的特定版本。如果您引用您的一个用户没有的特定接口版本,这会导致问题。

绑定绑定,您使用CreateObject或GetObject实例化对象,从Windows中按名称请求。 Windows将看名字< / a>并返回对象的引用。代码中的变量只是对象,并且调用方法有点危险,因为编译器允许您键入所需的任何方法名称,并且不提供编译时警告。这具有优势,只要您呼叫建立的方法,并且没有新的或不推荐使用,即不管用户的版本如何工作。

对于您获得的错误,您可能希望查看用户计算机上的Office版本 - saveas2 在Office 2010中添加。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top