gpt4 book ai didi

excel - excel表格中的用户表单-可以添加吗

转载 作者:行者123 更新时间:2023-12-01 23:45:31 28 4
gpt4 key购买 nike

我有一个用于生成报告的用户表单。如果我必须与某人共享用户表单,我会共享整个 Excel 工作表。是否可以将现有的用户表单作为加载项。这样,一旦安装,就可以通过任何打开的 Excel 工作表进行访问,而不仅仅是特定的 Excel 工作表。

提前致谢。

最佳答案

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

确保您的外接程序的项目名称与工作簿的名称不同。例如,如果您的用户工作簿的项目名为 VBAProject,则您的外接程序的项目名称必须是(并且应该命名为更合适的名称)类似 MyAddin 的名称。

所以,你有:

  • Book1.xlsm(项目名称 = VBAProject),以及
  • MyAddin.xlam(项目名称MyAddin)

步骤:

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

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

  5. MyAddin 添加公共(public)工厂函数,该函数将创建表单的新实例,并将其返回给调用它的任何 VBA:

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

    Public Sub test()

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

关于excel - excel表格中的用户表单-可以添加吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45231935/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com