单词-VBA 函数 "Method Saveas2 of object failed"



我有一个访问vba的应用程序,它也使用了单词vba。在本地机器上运行应用程序时,它运行良好。一旦它被移动到其他版本(访问和单词的相同版本),当它涉及到单词的vba部分时,它就会崩溃。document.open或.saveas2等命令失败:例如Method 'SaveAs2' of object failed

我还注意到,我在应用程序中引用的库是任何其他最终用户都需要的。我习惯于只使用库进行编译,从那时起,它们总是包含在.jar/.exe/etc中,但是,当你将应用程序移动到其他计算机时,它似乎总是试图重新编译?

我不精通VBA,所以我推测我失败的单词VBA函数是因为引用错误,还有其他想法吗?

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

使用早期绑定,可以在编写代码时添加对库的引用,这样VBA IDE就可以提供自动完成和一些编译时错误检查。您可以使用"new"关键字并通过直接键入对象名称来实例化对象。但是,早期绑定要求您选择特定的dll,并可能选择接口的特定版本。如果您引用了某个用户没有的特定界面版本,这可能会导致问题。

使用后期绑定,可以使用CreateObject或GetObject实例化对象,并从Windows按名称请求它们。Windows将查找该名称并返回对该对象的引用。代码中的变量只是对象,调用方法有点危险,因为编译器允许您键入所需的任何方法名,并且不提供编译时警告。这样做的优点是,只要您调用的是建立良好的方法,并且没有任何新的或不推荐使用的方法,那么无论用户的版本如何,代码都可以工作。

至于您收到的错误,您可能需要检查用户计算机上的Office版本-SaveAs2是在Office 2010中添加的。

相关内容

最新更新