2013-04-10 527 views
4

对不起,如果这是一个愚蠢的问题。不同Office版本之间的VBA兼容性

我可以做些什么来使我的VBA代码在Office 2003/2007/2010上工作?

它可以做到或应该为每个创建不同的VBA代码?

我用

  1. WinHttp.WinHttpRequest.5.1
  2. 做了很多的Windows的API调用
  3. 不得不库
  4. 的wininet.dll
  5. KERNEL32
  6. 展望5个引用。应用程序
  7. InternetExplorer.Application

我正在开发Office 2007,但Office 2010无法运行代码的用户。不确定用户是否在运行其他Office版本。

我也看到,可以在Visual Studio中创建一个Excel插件,但我没有很多的经验。

Thx对于任何建议。

+1

如果您使用Win32 API调用,并且Office 2010用户使用64位Windows,则由于声明不存在,这些API调用将不会运行。另外,检查Office 2010用户计算机上的VB项目中的引用,就好像IE版本不同一样,这也会失败! – 2013-04-10 11:20:24

+2

对象模型存在显着差异,这意味着一个版本中存在的对象不存在于另一个版本中。这是令人讨厌的麻烦。例如:一个类型的形状图片变成了一个类型的形状图片的占位符 - 因此用于查找图片的代码停止工作。那是在我们谈论32/64之前,以及与其他应用程序/版本的沟通。 – Floris 2013-04-10 11:46:52

+0

Thx为您的答复。我开始怀疑我是否不应该为此写一个普通的c#应用程序。 – Albertus 2013-04-10 11:54:22

回答

1

针对不同版本的Excel,你可以使用条件编译如#If Application.version>n then

然而,对于谁拥有Win64的系统的所有用户,您必须提供调用API函数的不同方法。

最好的办法是使用Office.Interop或VSTO从.NET使用自动化来尝试和操作Excel。