VBA интерфейс Casting
У меня есть следующий код (используя Osisoft PI SDK), который работает.
Dim myPISDK As Object
Dim srv As Object
Dim pn As Object
Dim IPICalc As IPICalculation
Set myPISDK = CreateObject("PISDK.PISDK")
Set pn = CreateObject("PISDKCommon.NamedValues")
Set srv = myPISDK.Servers.Item("myPIServer")
Set IPICalc = srv
Set pn = IPICalc.ExpressionSummaries(dtI, dtF, "", TAG, 0, 0, 0, sample)
Вы заметили, что я использую позднюю привязку для всего (объявить как объект и использовать createObject, чтобы создать его экземпляр), кроме "IPICalc"?
Это то, что мне нужно сделать, и я не знаю как. Мне нужно использовать позднюю привязку для IPICalc
к.IPICalculation
интерфейс от объекта Server, который я получаю в srv
переменная.
Это не сработает, если я объявлю как object
, Когда я делаю это: Set IPICalc = srv
, это получить IPICalculation
от srv
объект. Если я заявляю IPICalc as object
это не так.
Кто-нибудь знает, есть ли способ сделать это в VBA?
Помимо прочего, мне нужно, чтобы он работал без добавления ссылок на проект VBA, поэтому мне нужно выполнить позднюю привязку, иначе будут ошибки, так как Excel не будет знать, что IPICalculation
объявить это.