【发布时间】:2018-08-23 22:51:13
【问题描述】:
我仍在努力学习 VBA,所以这可能是一个愚蠢的问题,但我希望循环浏览大约 90-95 张的工作簿,将每个工作簿分成自己的工作簿,并将其保存为原始文件中工作表的名称。
脚本有效,但前提是我注释掉 .Worksheets(1).Delete,我想知道为什么...它在我运行它的两个工作表上都抛出 1004 错误,但不是同一个地方。第一张在标签 4 上出错,第二张在标签 40 左右。
现在我已将 FileNamePrefix 变量设置为切换,因为我在“ThisWorkbook”下的 VBA 窗口中运行它,因为我还没有弄清楚如何从它自己的工作表中运行这个宏,并且根据映射到的文件的名称/扩展名选择前缀。 (AC 以 .xlsm 形式出现,CC 以 .xlsx 形式出现)这仍在我的待办事项中,所以请不要剧透! :)
宏:
Sub Sheet_SaveAs()
Dim wb As Workbook
Dim WS_Count As Integer
Dim ActiveSheetName As String
Dim ws As Worksheet
Dim FileNamePrefix As String
Dim FileName As String
Dim FilePath As String
'FileNamePrefix = "CC Dashboard "
FileNamePrefix = "AC Dashboard "
WS_Count = ActiveWorkbook.Worksheets.Count
MsgBox (" This will create: " & WS_Count & " Files")
For Each ws In ThisWorkbook.Worksheets
Set wb = Workbooks.Add(xlWBATWorksheet)
With wb
ThisWorkbook.Worksheets(ws.Name).Copy After:=.Worksheets(.Worksheets.Count)
Application.DisplayAlerts = False
.Worksheets(1).Delete
Application.DisplayAlerts = True
.SaveAs ThisWorkbook.Path & "\" & FileNamePrefix & ws.Name
.Close False
End With
ws.Name = FileNamePrefix & ws.Name
Next
MsgBox (" Done! ")
End Sub
【问题讨论】:
-
并将其保存为原始文件中的工作表名称 问题是工作表名称可能包含对文件系统文件名无效的字符。
-
.Worksheets(1).Delete在您的循环中,您最终会删除最后一张纸。工作簿中必须至少有一张工作表 - 这就是您收到错误的原因。 -
我认为这是问题所在,我正在移动隐藏的工作表,然后删除导致问题的默认“sheet1”。我偶然发现有隐藏的床单,这让很多事情都曝光了。感谢您的意见!