0

我有一个 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。仍然无法正常工作。

老实说,我的选择已经不多了......谁能帮我解决这个问题?

谢谢您的帮助!

吉斯

4

1 回答 1

0

Mac 中的“Windows API 函数”。无法想象这会奏效。你的错误是这个吗?“旧格式或无效类型库”我会说您的代码与 Mac 不兼容。

我不知道为什么代码会在像这样的小问题上失败Application.ScreenUpdating = False;但你已经得出结论,这条线本身不是问题。

听起来您需要为 Mac 重写代码。

于 2013-10-12T14:34:56.777 回答