Excel VBA:如何在个人工作簿中使用 class 模块的早期绑定

Excel VBA: How to use early binding with class module in Personal workbook

我的项目中有一个 class 模块,我想将其提供给其他项目。我将 class 模块移到了我的个人工作簿中。在 this Microsoft document 之后,我将此功能添加到个人工作簿中,以便能够在其他项目中创建 class 的实例。

Option Explicit

Public Function new_video() As cVideo
    Set new_video = New cVideo
End Function

我现在可以在我的项目中创建一个实例。但是,为此,我必须使用后期绑定。

Dim Video As Object
Set Video = Application.Run("'personal.xlsb'!new_video")

这意味着我在输入“视频”后没有获得方法和属性列表。

根据上面链接的 Microsoft 文档,它说

Remember that to use the early binding code, the client project must include a reference (Tools | References…) to the Class Provider.xls file.

我已经设置了对 PersonalMacros(个人工作簿的项目名称)的引用,但我在列表中没有看到工作簿名称本身 (Personal.xlsb)。

还有什么我需要做的或者我必须接受延迟绑定吗?

首先,在 Project Explorer window (Ctrl+R) 中,确保 select 已添加引用的工作簿。

然后 select Tools >> References,您应该会在可用参考文献下看到 PersonalMacros

然后您可以使用早期绑定声明并创建 class 对象的实例,如下所示...

Dim video As PersonalMacros.cVideo
Set video = PersonalMacros.new_video

此外,请确保 class 模块中的 Instancing 属性 设置为 2 - PublicNotCreatable