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 объявить это.

0 ответов

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