VBA界面浇铸
我有以下代码(使用Osisoft PI SDK),可以正常工作VBA界面浇铸,vba,excel,interface,com,late-binding,Vba,Excel,Interface,Com,Late Binding,我有以下代码(使用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("myPISe
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)
你有没有注意到除了“IPical”之外,我对所有东西都使用了后期绑定(声明为对象并使用createObject实例化它)
这就是我需要做的,我不知道怎么做。我需要为IPICalc
to使用后期绑定。ipicaculation
是来自服务器对象的接口,我在srv
变量中得到它
如果我声明为
对象
,则它不起作用。执行此操作时:Set IPICalc=srv
,它从srv
对象获取ipicaluation
。如果我将ipical声明为object
,它不会这样做
有人知道我是否有办法在VBA中做到这一点吗?除其他事项外,我需要在不向VBA项目添加引用的情况下使其工作,因此我需要进行后期绑定,否则会出现错误,因为Excel不知道声明它的
ipiculation
是什么。为什么不能将其声明为Object
?如果我声明为Object,则无法工作。当我这样做时:设置IPICalc=srv,它从srv对象获得“ipicaluation”。如果我将IPICAL声明为对象,它不会这样做。@hend它会做什么呢?将其变暗作为变量会起作用吗?或者把“As…”都省略掉?如果是这样的话:在项目中添加一个引用。如果出于某种原因,您不想引用实际的类型库,一个很小的tlb文件,只有ipicaculation
接口(您必须查找它的IID),只需从IDispatch
派生它,而不提供任何方法,然后从Excel中引用该tlb。