1

我正在编辑一个适用于 Office 2003、2007、2010、2013 等的 VBA 宏,在我们使用过的任何以前的操作系统版本的 Windows 上。现在我们已经升级到 Windows 10,这行代码:

Private m_document As MSXML2.DOMDocument

不工作。它需要是

Private m_document As MSXML2.DOMDocument60

在上下文中,我声明了显式的全局变量,这就是其中之一。

问题是,我需要在我的计算机上编辑这些宏,但它们也需要在较旧的操作系统版本上工作,因为该产品仍在这些版本上使用。我已经尝试了很多东西来弄清楚是否有任何方法可以使这项工作,否则,没有骰子。MSXML6 在我的旧(运行 Windows 7)和新计算机上。所以在这一点上,我希望有一种方法可以根据使用的操作系统来定义这个变量。我知道你可以检查操作系统,我已经找到了代码,但是有没有办法根据操作系统有条件地定义变量?

IE:

if windows10
  Private m_document As MSXML2.DOMDocument60
else
  Private m_document As MSXML2.DOMDocument 
4

1 回答 1

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”并使用智能感知创建所有代码,然后在准备好部署后,再改回上面的后期绑定。

于 2016-03-31T23:22:22.490 回答