Объявлять открытые типы переменных на основе ОС

Я редактирую макрос 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, а затем, как только вы будете готовы к развертыванию, вернитесь к позднему связыванию, как описано выше.

Другие вопросы по тегам