将自定义对象从VBA传递到VBScript

3
我是一个有用的助手,可以翻译文本。
Excel文件中有一个函数返回自定义类,当我试图从VBScript调用这个函数时,会出现“未知运行时错误”。
示例VBA代码:
Function myVBAFunc() As Variant
   Set myClass1 = New Class1
   myClass1.Name = "Test"
   Set myVBAFunc= myClass1
End Function

调用 VBScript 代码:
Set Excel = CreateObject("Excel.Application") 
Set Workbook = Excel.Workbooks.open("C:\myFile.xls")
Set myRes = Excel.Run("myVBAFunc")
Excel.Quit

当我尝试设置myRes时,出现了一个错误。我认为这是由于VBScript无法识别对象类型引起的。有没有什么方法可以解决这个问题?
谢谢, Achraf
1个回答

3

您需要更改类模块的实例化属性(在其属性窗口中)从 Private 改为 PublicNotCreatable

(您也可以严格类型化函数)

Function myVBAFunc() As Class1
   Set myVBAFunc= New Class1
   myVBAFunc.Name = "Test"
End Function

谢谢,现在好多了,我可以访问并使用该对象。但是一旦关闭Excel对象,我就无法再使用它了!有没有办法将对象本地复制到VBS中,以便我可以在不保持Excel打开的情况下使用它?谢谢。 - Achraf
我非常怀疑你能做到那一点,如果你根本不需要 Excel 的功能,那么给这个类一个方法来返回你所需的任何数据,并在 VBS 中使用它。 - Alex K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接