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
。
我的项目中有一个 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
。