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

问题描述

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

@H_404_2@Option Explicit Public Function new_video() As cVideo Set new_video = New cVideo End Function

我现在可以在我的项目中创建一个实例。但是,要做到这一点,我必须使用后期绑定。

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

这意味着一旦我输入“视频”,我就不会得到方法属性的列表。

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

记住,要使用早期绑定代码,客户端项目必须 包括对 Class Provider.xls 的引用(工具 | 引用...) 文件

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

还有什么我需要做的吗,或者我必须满足于延迟绑定?

解决方法

首先,在“项目资源管理器”窗口 (Ctrl+R) 中,确保选择已添加引用的工作簿。

然后选择 Tools >> References,您应该会在可用参考下看到 PersonalMacros

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

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

另外,请确保您的类模块中的 Instancing 属性设置为 2 - PublicNotCreatable