我有一个访问vba的应用程序,它也使用了单词vba。在本地机器上运行应用程序时,它运行良好。一旦它被移动到其他版本(访问和单词的相同版本),当它涉及到单词的vba部分时,它就会崩溃。document.open或.saveas2等命令失败:例如Method 'SaveAs2' of object failed
。
我还注意到,我在应用程序中引用的库是任何其他最终用户都需要的。我习惯于只使用库进行编译,从那时起,它们总是包含在.jar/.exe/etc中,但是,当你将应用程序移动到其他计算机时,它似乎总是试图重新编译?
我不精通VBA,所以我推测我失败的单词VBA函数是因为引用错误,还有其他想法吗?
使用早期绑定,可以在编写代码时添加对库的引用,这样VBA IDE就可以提供自动完成和一些编译时错误检查。您可以使用"new"关键字并通过直接键入对象名称来实例化对象。但是,早期绑定要求您选择特定的dll,并可能选择接口的特定版本。如果您引用了某个用户没有的特定界面版本,这可能会导致问题。
使用后期绑定,可以使用CreateObject或GetObject实例化对象,并从Windows按名称请求它们。Windows将查找该名称并返回对该对象的引用。代码中的变量只是对象,调用方法有点危险,因为编译器允许您键入所需的任何方法名,并且不提供编译时警告。这样做的优点是,只要您调用的是建立良好的方法,并且没有任何新的或不推荐使用的方法,那么无论用户的版本如何,代码都可以工作。
至于您收到的错误,您可能需要检查用户计算机上的Office版本-SaveAs2是在Office 2010中添加的。