【发布时间】:2020-05-21 11:24:41
【问题描述】:
所以我有一个宏,可以将每张工作表导出到一个新工作簿中。现在我的问题是我不想导出特定的工作表名/(s)(可以说是“源”工作表),当我添加代码“如果 xWs.name“源”然后添加 else 并结束如果我仍然收到“if without block if etc”错误。我尝试了很多方法,但都不起作用。
有人可以帮忙吗?
Sub SplitWorkbook()
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim xWs As Worksheet
Dim xWb As Workbook
Dim FolderName As String
Application.ScreenUpdating = False
Set xWb = Application.ThisWorkbook
DateString = Format(Now, "YYYYMMDD")
DateString2 = Format(Now, " - MMMM YYYY")
FolderName = xWb.Path & "\" & "Re'porting_" & DateString
MkDir FolderName
For Each xWs In xWb.Worksheets
xWs.Copy
If Val(Application.Version) < 12 Then
FileExtStr = ".xls": FileFormatNum = -4143
Else
Select Case xWb.FileFormat
Case 51:
FileExtStr = ".xlsx": FileFormatNum = 51
Case 52:
If Application.ActiveWorkbook.HasVBProject Then
FileExtStr = ".xlsm": FileFormatNum = 52
Else
FileExtStr = ".xlsx": FileFormatNum = 51
End If
Case 56:
FileExtStr = ".xls": FileFormatNum = 56
Case Else:
FileExtStr = ".xlsb": FileFormatNum = 50
End Select
End If
xFile = FolderName & "\" & Application.ActiveWorkbook.Sheets(1).Name &
DateString2 & FileExtStr
Application.ActiveWorkbook.SaveAs xFile, FileFormat:=FileFormatNum
Application.ActiveWorkbook.Close False
Next
MsgBox "You can find the files in " & FolderName
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
正确的缩进(就像在您的
Select Case语句中一样)对调试有很大帮助 - 我建议以后再这样做 - 我看不到有问题的If语句?
标签: excel vba if-statement split worksheet