我正在编辑一个适用于Office 2003,2007,2010,2013等的VBA宏,用于我们之前使用的任何以前操作系统版本的Windows。现在我们已经升级到Windows 10,这行代码:
Private m_document As MSXML2.DOMDocument
不起作用。它必须是
Private m_document As MSXML2.DOMDocument60
在上下文中,我声明了显式的全局变量,这就是其中之一。
问题是,我需要在我的计算机上编辑这些宏,但是他们还需要在较旧的OS版本上工作,因为该产品仍在这些版本上使用。我已经尝试了很多东西来弄清楚是否有任何方法可以让这项工作成功,没有骰子。 MSXML6在我的旧版(运行Windows 7)和新计算机上。所以在这一点上,我希望有一种方法可以根据使用的操作系统来定义这个变量。我知道你可以查看操作系统,我已经找到了相应的代码,但有没有办法根据操作系统有条件地定义变量?
即:
if windows10
Private m_document As MSXML2.DOMDocument60
else
Private m_document As MSXML2.DOMDocument
答案 0 :(得分:1)
您需要使用后期绑定。
Private m_document As Object
Sub testSub()
If windows10 Then
Set m_document = CreateObject("MSXML2.DOMDocument60")
Else
Set m_document = CreateObject("MSXML2.DOMDocument")
End If
End Sub
作为奖励提示,如果你这样做,你将失去VBA中的智能感知。因此,您可以将其设置为" Private m_document As MSXML2.DOMDocument60"并使用intellisense创建所有代码,然后在准备好部署之后,如上所述更改回后期绑定。