复制每个工作表以分隔给定路径的cls文件

时间:2013-07-24 09:31:34

标签: excel vba

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

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

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

任何人都可以帮我这个吗? RGDS

1 个答案:

答案 0 :(得分:0)

你需要的是VBE。

首先,添加对Microsoft Visual Basic for Applications Extensbility的引用。

然后,我添加了在宏安全设置中启用对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"