首页 > 解决方案 > Excel VBA:如何在个人工作簿中使用与类模块的早期绑定

问题描述

我的项目中有一个类模块,我想将其提供给其他项目。我将课程模块移至我的个人工作簿。根据这个 Microsoft 文档,我将此功能添加到个人工作簿中,以便能够在其他项目中创建该类的实例。

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")

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

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

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

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

还有什么我需要做的,还是我必须接受后期装订?

标签: excelvbaclasslate-bindingearly-binding

解决方案


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

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

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

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

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


推荐阅读