0

我想将每张工作表复制/保存/导出到单独的 vba 文件(稍后我将导入)。我打算这样做是因为,我有一个工作簿 beforeclose 事件来删除除了 sheet1 之外的所有工作表。所以在删除之前,我希望将所有其他工作表复制到指定的路径。当然,同样的内容将通过工作表单击或框单击事件或以后的任何方式导入。

我试过这样的东西,但它不起作用!

ActiveWorkbook.Worksheets("ABC").Export Filename:="C:\Users\xyz\Desktop\vbe\A"ABC".cls

谁能帮我这个?rgds

4

1 回答 1

0

你需要的是VBE。

首先,为应用程序可扩展性添加对 Microsoft Visual Basic 的引用。

然后,我在宏安全设置中添加以启用对 VBA 项目对象模型的信任访问。

现在,以下代码将起作用:

Sub Save_cls()
    Dim c As VBComponent
    f = FreeFile
    For Each c In ThisWorkbook.VBProject.VBComponents
        If c.Type = vbext_ct_ClassModule Then
            Open c.Name & ".cls" For Output As f
            Print #f, c.CodeModule.Lines(1, c.CodeModule.CountOfLines)
            Close f
        End If
    Next
End Sub

编辑:通用函数- 将它放在 VBA 模块中,因此它可用于整个工作簿并且不附加到单个工作表:

Public Sub SaveSheetCode(ByVal Sheet As Worksheet, ByVal Filename As String)
    Dim c As VBComponent, f As Integer
    Set c = Sheet.Parent.VBProject.VBComponents(Sheet.CodeName)
    f = FreeFile
    Open Filename For Output As f
    Print #f, c.CodeModule.Lines(1, c.CodeModule.CountOfLines)
    Close f
End Sub

用法:

 ... Anywhere in your book code
 SaveSheetCode WorkSheets("Sheet1"), "C:\VBA\Sheet1.cls"
于 2013-07-24T12:53:40.240 回答