如何仅使用VBA中的后期绑定向下转换对象?

时间:2019-06-17 12:47:26

标签: excel vba

我正在编写一个VBA应用程序,并且对于特定功能,我仅使用后期绑定,因为该应用程序的大多数用户都不会安装参考(并且不会使用该特定功能)。

我正在使用的对象的行为类似于:

class PISDK{
    PIServer GetServer(string hostName)
}

GetServer方法返回一个PIServer对象,但是存在一个更具体的接口,实现了PIServer

interface IGetPoints2 : PIServer{}

我想将PIServer对象下放为IGetPoints2对象。

什么都不做,我得到一个PIServer对象:

Dim PiSdk As Object
Dim PiServer As Object

Set PiSdk = CreateObject("PISDK.PISDK")
Set PiServer = PiSdk.GetServer("foo")

在调试器中查看PiServer会确认这一点。

使用强类型变量应该可以,但是我不想引用这里使用的任何类型。

如何仅使用后期绑定向下转换该对象?

1 个答案:

答案 0 :(得分:0)

Please read this:

  • 由于您没有添加对PI SDK类型库的引用,因此 相信您不能使用“ rtInterpolated”作为以下内容的第二个参数 ArcValue方法;相反,您可以使用相应的号码 (对于RetrievalTypeConstants中的“ rtInterpolated”为3 列举)。
  • 后期绑定的VBA很难使用 参数,因为我们在调用方法时不能忽略它们。代替, 您需要使用Nothing(如果可选参数为 对象)或“”(如果可选参数是字符串)作为 “参数占位符”(顺便说一句,在
    VBScript,一种脚本语言,用于包含在文件中的脚本,
    .vbs扩展名,可独立于任何应用程序运行。
  • 可以将一些功能示例代码放在一起,更多 完成,希望会对您有所帮助。