Объявлять открытые типы переменных на основе ОС
Я редактирую макрос VBA, который работал для Office 2003, 2007, 2010, 2013 и т. Д., В любой предыдущей версии ОС, которую мы использовали. Теперь, когда мы обновились до Windows 10, эта строка кода:
Private m_document As MSXML2.DOMDocument
Не работает Это должно быть
Private m_document As MSXML2.DOMDocument60
В контексте я объявляю явные глобальные переменные, и это одна из них.
Проблема в том, что мне нужно отредактировать эти макросы на моем компьютере, но они также должны работать на старых версиях ОС, потому что продукт все еще используется в этих версиях. Я перепробовал кучу вещей, чтобы выяснить, есть ли способ заставить это работать иначе, без игры в кости. MSXML6 установлен как на моем старом (под управлением Windows 7), так и на новом компьютере. Поэтому на данный момент я надеюсь, что найдется способ определить эту переменную в зависимости от используемой ОС. Я знаю, что вы можете проверить ОС, я нашел код для этого, но есть ли способ условно определить переменную на основе ОС?
то есть:
if windows10
Private m_document As MSXML2.DOMDocument60
else
Private m_document As MSXML2.DOMDocument
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
В качестве бонуса, если вы сделаете это, вы потеряете intellisense в VBA. Таким образом, вы можете установить его как "Private m_document As MSXML2.DOMDocument60" и создать весь свой код с помощью intellisense, а затем, как только вы будете готовы к развертыванию, вернитесь к позднему связыванию, как описано выше.