Vba 基于操作系统声明公共变量类型
我正在编辑一个VBA宏,它适用于Office 2003、2007、2010、2013等,适用于我们以前使用的任何windows操作系统版本。现在,我们已升级到windows 10,以下代码行:Vba 基于操作系统声明公共变量类型,vba,ms-word,msxml6,Vba,Ms Word,Msxml6,我正在编辑一个VBA宏,它适用于Office 2003、2007、2010、2013等,适用于我们以前使用的任何windows操作系统版本。现在,我们已升级到windows 10,以下代码行: Private m_document As MSXML2.DOMDocument 不起作用。这是必须的 Private m_document As MSXML2.DOMDocument60 在上下文中,我声明了显式全局变量,这就是其中之一 问题是,我需要在我的计算机上编辑这些宏,但它们也需要在较旧的操
Private m_document As MSXML2.DOMDocument
不起作用。这是必须的
Private m_document As MSXML2.DOMDocument60
在上下文中,我声明了显式全局变量,这就是其中之一
问题是,我需要在我的计算机上编辑这些宏,但它们也需要在较旧的操作系统版本上工作,因为这些版本上仍然使用该产品。我已经尝试了很多东西,想弄清楚是否有任何方法可以让这一切顺利进行,否则,就没办法了。MSXML6在我的旧电脑(运行Windows7)和新电脑上都有。因此,在这一点上,我希望有一种方法可以根据使用的操作系统定义这个变量。我知道你可以检查操作系统,我已经找到了代码,但是有没有一种方法可以根据操作系统有条件地定义变量
即:
您需要使用后期绑定
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中的intellisense。因此,您可以将其设置为“Private m_document as MSXML2.DOMDocument60”,并使用intellisense创建所有代码,然后在准备部署后,按上述方式更改回后期绑定。Mmm。我记得,从2003年开始,MSXML6解析器在Office的每个版本中都进行了分发,因为2003年是引入XML特性的版本。您确定它在其他系统上不可用,并且仅仅将声明从DOMDocument更改为DOMDocument60是行不通的吗?这是我尝试的第一件事,因为正是您所说的。当我更改为DOMDocument60时,我得到了一个类型不匹配错误。所以…这也没有完全起作用,不是因为它错了,而是因为CreateObject(“MSXML2.DOMDocument60”)不能正常工作。奇怪的是,CreateObject(“MSXML2.DOMDocument”)在这两种平台上都运行良好。所以谢谢你们,这很有帮助,我不知道为什么它会这样工作,我想我只是比以前更讨厌VBA了
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