我有一个 Excel 应用程序,里面有很多宏。工作簿中的宏已签名。一些宏调用 Windows API 函数,并且它们已被移植以正确支持 32 位和 64 位版本的 Excel。该应用程序在不同的配置(Windows XP、Windows Vista、Windows 7、Windows 8、Excel 2003、Excel 2007、Excel 2010,甚至某些 Excel 2013)上都能正常工作。
该应用程序是在装有 Windows XP 和 Excel 2007 的 PC 上开发的,使用的是加拿大法语区域设置。
我有一位客户具有以下设置:
- 装有 Mac OS/X 的笔记本电脑
- 具有以下功能的虚拟机:
- 视窗 8 英文
- Excel 2013 英文版
当他运行我的应用程序时,他总是收到运行时错误 -2147319784 (0x80028018)。
我试图指出错误发生的位置,似乎只要宏执行一些引用 Excel 对象模型的东西(例如:) Application.ScreenUpdating = False
我就会得到错误。
我试图复制新工作簿中失败的确切代码行,它工作正常,没有任何错误。
我已经在其他版本的 Windows 和 Excel 产品的英文版本中看到了类似的行为,解决问题的方法是将 de 区域设置更改为美国英语。我在客户的机器上试了一下,还是不行。
我在网上搜索并发现与 Excel 2002 类似的问题,并在 Microsoft 的知识库 ( http://support.microsoft.com/default.aspx?scid=kb;en-us;320369 ) 中找到了一篇帖子。这篇文章适用于 .NET VSTO 应用程序,这显然不是我的情况。我无法按照文章中的建议更改当前线程的语言环境,因为这在我的 VBA 宏中不可用。我试图将Excel.exe
文件复制到一个1033
文件夹并xllex.dll
按照建议将其重命名,但它也不起作用。
我什至要求我的客户从他的机器上完全卸载所有 Office 产品,然后重新安装 Excel 2013。仍然无法正常工作。
老实说,我的选择已经不多了......谁能帮我解决这个问题?
谢谢您的帮助!
吉斯