Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA界面浇铸_Vba_Excel_Interface_Com_Late Binding - Fatal编程技术网

VBA界面浇铸

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

我有以下代码(使用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)
你有没有注意到除了“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。