将userform复制到另一个工作簿

时间:2017-06-11 00:20:59

标签: excel-vba userform vba excel

我已经找到了这个问题的答案,但找不到与我正在寻找的完全匹配的东西,如果有人有答案或者可以指向我的方向一个回答这个问题的问题,我将不胜感激。

我已经讨论过构建将数据输入工作簿并成功构建它的解决方案,但是需要添加的工作簿是一个非常活跃的工具,并且不断更新新的/更改的数据,所以我不得不在工作簿的副本中构建它,现在需要将它添加到活动工作簿中。我知道一个简单的方法是简单地从活动工作簿中获取数据并将其添加到我的版本中,然后将我的版本作为活动书籍,但这将是一项相当大的任务,我只能将工作簿脱机〜 5分钟所以我认为更简单的方法是将我的代码和用户形式复制到活动的电子表格中。代码很容易复制和粘贴,但我找不到将userform(格式化和全部)复制到工作簿中的方法,有没有办法导出它然后将其导入实时工作簿?

我希望这清楚易懂,如果我需要澄清任何事情,请告诉我。

2 个答案:

答案 0 :(得分:3)

我会告诉你如何出口和出口在VBA中导入Userform,然后在其他工作簿中重新导入:

Option Explicit 

Public Function CopyUserForm(ByVal FormName$, Optional ByVal WB_Dest As Workbook) As Workbook   'copies sheets/Thisworkbook/Userforms/Modules/Classes  to a new workbook

Dim Comp As VBComponent
Dim CompStr$

On Error Resume Next 'needed for testing if component already exists in destination WorkBook, and vbe minimizing

If WB_Dest Is Nothing Then Set WB_Dest = Application.Workbooks.add

For Each Comp In ThisWorkbook.VBProject.VBComponents
    With Comp

            If .Type = vbext_ct_MSForm Then '=3

                If .Name = FormName Then

                    '// Export Form
                    CompStr = "C:\" & .Name ' & " " & Replace(Date, "/", "-") & ".frm"
                    .Export FileName:=CompStr 'this line fails if the destination Disk is protected, wich happened on my system disk :/

                    '// Import Form to new workbook
                    WB_Dest.VBProject.VBComponents.Import FileName:=CompStr

                    '// Kill temporary Form Files
                    Kill CompStr: Kill CompStr & ".frx"

                    Exit For

                End If

            End If

    End With 'comp

Next Comp

Err.Clear: On Error GoTo 0

Set CopyComponentsModules = WB_Dest

Set Comp = Nothing
Set WB_Dest = Nothing

End Function

然后,您可以调用此函数:CopyUserForm "UserForm1",例如。

答案 1 :(得分:2)

您可以为两个Excel工作表打开代码编辑器。现在将userform从一个Excel拖放到另一个Excel。感谢