向.NET客户端公开.NET枚举{VBScript}

时间:2010-04-12 18:24:44

标签: vba com interop vbscript enums

尝试创建PoC以从COM客户端公开/调用各种.NET对象。 .NET库包含一些类和枚举。

能够成功访问VBScript中的类但无法访问枚举。 我知道Enums是值类型,因此'CreateObject'在这种情况下不起作用。

但是我能够在VBA代码中访问相同的Enum。

问题:

  • 如何在VBScript中访问枚举?

  • 为什么两个COM客户端的行为不同?如果VBA对象浏览器可以看到枚举,为什么不能让VBScript创建一个?

.NET

  [ComVisible(true)]
[GuidAttribute("ebc25cf6-9120-4283-b972-0e5520d0000E")]        
public enum Currency
{        
    GBP = CurrencyConvertorBL.CurrencyConvertorRef.Currency.GBP,        
    USD = CurrencyConvertorBL.CurrencyConvertorRef.Currency.USD,        
    INR = CurrencyConvertorBL.CurrencyConvertorRef.Currency.INR,
    AUD = CurrencyConvertorBL.CurrencyConvertorRef.Currency.AUD
}

VBA

    Private Function ConvertCurrency(fromCurrency As Currency, 
toCurrency As Currency) As Double

VBScript ???

Set currencyConvertorCCY = CreateObject("CurrencyConvertorBL.Currency")

提前致谢。

1 个答案:

答案 0 :(得分:0)

Currency是VBA中的内置数据类型,是数字类型。你必须在你的枚举前加上你的类型库名称,不要对编译器不明确,即fromCurrency As MyProject.Currency

对于VBScript,请尝试以下文章:How Can I Access a Type Library From Within a Script?