我有一个用于生成报告的用户表单。 如果我必须与我分享整个Excel工作表的人共享用户表单。 是否可以将现有的用户表单设置为Add-in.so,一旦安装,就可以通过任何打开的excel表访问它,而不仅仅是那个特定的Excel工作表。
提前致谢。
答案 0 :(得分:3)
是的,你可以,但是,你需要做一些准备。
确保您的插件的项目名称与工作簿的名称不同。例如,如果您的用户的工作簿项目被称为VBAProject
,那么您的加载项的项目名称必须(并且应该被命名为更合适的名称) MyAddin
。
所以,你有:
Book1.xlsm
(项目名称= VBAProject
)和MyAddin.xlam
(项目名称MyAddin
)步骤:
MyAddin
。MyUserForm
)对于早期绑定,我们需要使表单实例化PublicNotCreatable
,但VBE UI不提供表单的属性,因此我们需要将表单导出到文件夹,然后编辑MyUserForm.frm
文件,将Attribute VB_Exposed
属性更改为True
(默认情况下为“假”)。也就是说,在文本编辑器中,编辑名为MyUserForm.frm
的导出文件,并按如下方式调整现有行:
Attribute VB_Exposed = True
保存文件更改,(在MyAddin中删除原始表单),然后将MyUserForm.frm导入项目。新用户表单将PublicNotCreatable
实例化。
将公共工厂函数添加到MyAddin
,这将创建表单的新实例,并将其返回给调用它的任何VBA:
Public Function GetUserForm() As MyUserForm
Set GetUserForm = New MyUserForm
End Function
在Book1.xlsm
中,您现在可以编写如下代码,以及完整的早期绑定支持。
Public Sub test()
Dim frm As MyAddin.MyUserForm
Set frm = MyAddin.GetUserForm()
frm.Show
End Sub
答案 1 :(得分:-1)
是的,您可以共享用户表单。
右键单击userform并将其导出。
您可以通过导入来添加表单。
由于