【问题标题】:Expose class in Excel XLA add-in在 Excel XLA 加载项中公开类
【发布时间】:2012-04-04 13:51:52
【问题描述】:

我为 Excel 编写了一个 XLA 插件。这个插件包括一个类模块。我想知道如何公开这个类模块以供使用。我四处搜索并找到了一种使用 Visual Studio 的方法,但遗憾的是我没有 Visual Studio。有什么方法可以从 XLA 做到这一点?

【问题讨论】:

    标签: vba excel xla


    【解决方案1】:

    您可以在 XLA 中创建一个返回类实例的公共函数。然后任何引用 XLA 的工作簿都可以调用该函数。假设您有 Book2,其中包含要使用 Class1 的 Class1 和 Book3。将 Class1 Instancing 属性更改为 Public Not Creatable(在类模块中时按 F4)。

    在 Book2 的标准模块中创建一个函数

    Public Function InstantiateClass1() As Class1
    
        Set InstantiateClass1 = New Class1
    
    End Function
    

    在Book3中,调用函数

    Public Sub DoStuff()
    
        Dim clsClass1 As Book2Project.Class1
    
        Set clsClass1 = instantiateclass1
    
        clsClass1.prop = "something"
    
        Debug.Print clsClass1.prop
    
    End Sub
    

    在此示例中,Class1 有一个名为 prop 的属性。 Book2 的 VBProject 名称已更改为 Book2Project。

    【讨论】:

    • 解决方案+1。我喜欢将所有实例创建函数封装在工厂类模块中(在示例中将在 Book2 XLA 中创建,具有 Public Not Creatable 设置)。然后,您只需要标准模块中的一个创建方法来创建工厂实例,客户端将使用该实例。这也允许客户端使用 Intellisense 查看工厂对象中所有可用的实例化方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多