将工作表导出到新工作簿的宏-问题

问题描述 投票:0回答:1

所以我有一个宏,可以将每张工作表导出到一个新的工作簿中。现在我的问题是我不想导出特定的工作表名称(“ Source”工作表可以说),当我添加代码“ If xWs.name <>” Source”时,然后添加else和end如果我仍然收到“ if if if if block”错误。我尝试了很多方法,但没有起作用。

有人可以帮忙吗?

    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
excel vba if-statement macros worksheet
1个回答
0
投票
我已经获取了您的代码,并添加了所需的If...Then...Else语句。我还使用缩进和代码中关键步骤之间的间距对它进行了格式化,这使它更易于阅读和识别代码何时在执行/评估新事物。

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 If Not xWs.Name = "Your Worksheet name to exclude" Then 'Change this string to suit your worksheets name 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 Else 'Go to next worksheet End If Next xWs MsgBox "You can find the files in " & FolderName Application.ScreenUpdating = True End Sub

此文件对我来说编译并运行良好(除非它在未保存的新工作簿中,因此文件路径基本上不存在-因此我注释了MkDir...Save内容)。

我也使用了If Not xWs = "..."而不是If xWs <> "..."

© www.soinside.com 2019 - 2024. All rights reserved.