excel表格中的用户窗体 – 是否可以添加

我有一个用于生成报告的用户窗体。 如果我必须与某人共享用户表单,我将共享整个excel表单。 是否有可能使现有的用户表单成为Add-in.so,一旦安装,就可以通过打开的任何Excel表单访问,而不仅仅是该特定的Excel表单。

提前致谢。

是的,你可以,但是,你需要做一些准备。

确保您的插件有一个项目名称不同于您的工作簿的名称。 例如,如果你的用户的工作簿的Project被称为VBAProject ,那么你的加载项的项目名称必须是(而且应该被命名为更合适的东西),就像MyAddin一样。

所以你有了:

  • Book1.xlsm (Project name = VBAProject )和
  • MyAddin.xlam (项目名称MyAddin

脚步:

  1. 在Book1 / VBAProject内,向MyAddin添加一个引用(Tools..References)。
  2. 在MyAddin中,创build您的UserForm( MyUserForm
  3. 对于早期绑定,我们需要使表单实例PublicNotCreatable ,但是VBE UI并不为表单提供该属性,所以我们需要将表单导出到文件夹,然后编辑MyUserForm.frm文件,更改Attribute VB_Exposed属性为True (默认为False)。 也就是说,在文本编辑器中,编辑名为MyUserForm.frm的导出文件并调整现有的行,如下所示:

     Attribute VB_Exposed = True 
  4. 保存文件更改(删除MyAddin中的原始表单),然后将MyUserForm.frm导入到项目中。 新的用户表单将具有PublicNotCreatable实例。

  5. 将一个公共工厂函数添加到MyAddin ,它将创build一个新的窗体实例,并将其返回给调用它的任何VBA:

     Public Function GetUserForm() As MyUserForm Set GetUserForm = New MyUserForm End Function 
  6. Book1.xlsm ,您现在可以编写如下所示的代码,以及完整的早期绑定支持

     Public Sub test() Dim frm As MyAddin.MyUserForm Set frm = MyAddin.GetUserForm() frm.Show End Sub 

是的,你可以分享用户表单。

右键单击用户窗体并将其导出。

你可以通过导入来添加表单。

谢谢