我想将我的每张工作表复制/保存/导出到单独的vba文件(我稍后会导入)。我打算这样做,因为我有一个工作簿beforeclose事件删除除sheet1之外的所有工作表。所以在删除之前我希望将所有其他工作表复制到指定的路径。通过工作表单击或框单击事件或以后的任何内容导入相同的内容。
我试过这样的东西,但它不起作用!
ActiveWorkbook.Worksheets("ABC").Export Filename:="C:\Users\xyz\Desktop\vbe\A"ABC".cls
任何人都可以帮我这个吗? RGDS
答案 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"