Excel表格中的用户形式 - 可以加入

时间:2017-07-21 07:45:12

标签: excel vba userform

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

确保您的插件的项目名称与工作簿的名称不同。例如,如果您的用户的工作簿项目被称为VBAProject,那么您的加载项的项目名称必须(并且应该被命名为更合适的名称) MyAddin

所以,你有:

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

步骤:

  1. 在Book1 / VBAProject中,将引用(Tools..References)添加到MyAddin
  2. 在MyAddin中,创建用户窗体(MyUserForm
  3. 对于早期绑定,我们需要使表单实例化PublicNotCreatable,但VBE UI不提供表单的属性,因此我们需要将表单导出到文件夹,然后编辑MyUserForm.frm文件,将Attribute VB_Exposed属性更改为True(默认情况下为“假”)。也就是说,在文本编辑器中,编辑名为MyUserForm.frm的导出文件,并按如下方式调整现有行:

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

  5. 将公共工厂函数添加到MyAddin,这将创建表单的新实例,并将其返回给调用它的任何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
    

答案 1 :(得分:-1)

是的,您可以共享用户表单。

右键单击userform并将其导出。

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

由于