За пару лет я создал go несколько таблиц Excel, в которых есть макросы VBA с использованием стороннего API.
Этот API был обновлен, но изменения настолько незначительны, что единственное, что изменилось в моих таблицах есть несколько типов переменных.
Старая версия использовала эти типы переменных:
Dim ETABSObject As ETABS2016.cOAPI
Dim SapModel As ETABS2016.cSapModel<br>
Set ETABSObject = GetObject(, "CSI.ETABS.API.ETABSObject")
Set SapModel = ETABSObject.SapModel
В то время как новая версия использует эти типы:
Dim ETABSObject As ETABSv17.cOAPI
Dim SapModel As ETABSv17.cSapModel<br>
Set ETABSObject = GetObject(, "CSI.ETABS.API.ETABSObject")
Set SapModel = ETABSObject.SapModel
Это буквально единственное, что меняется для меня, замена одного другим позволяет мне использовать мою старую электронную таблицу с новым API.
Вот моя проблема : программное обеспечение, которое использовало старый API (ETABS16), все еще используется, и я хотел бы избежать дублирования всех моих электронных таблиц (создание версии для ETABS2016 и одной для ETABSv17).
переменная SapModel
широко используется во всем коде, поэтому наличие переменных SapModel16
и SapModel17
здесь не вариант.
Есть ли способ объявить SapModel
таким образом что он будет работать для обеих версий API?
Я попытался объявить его как Variant
, а затем либо установить его как ETABSObject2016.SapModel
, либо ETABSObjectv17.SapModel
, используя on error GoTo
, но это не сработало . on error Goto
смог определить, какая из двух версий API использовалась, но таблица зависала при первом использовании SapModel
.