为每个工作表创建新工作簿,但特定工作表除外

时间:2017-10-24 10:53:24

标签: excel vba excel-vba

我有一个包含多个工作表的工作簿,这些工作簿将被分成单独的站点智能工作表,但是工作簿也没有很少的工作表,这些工作表不是创建新工作簿所必需的。

例如Sheet1 =总体Sheet2 =员工表3 = Site1 Sheet4 = Site2 ....

现在我想为Sheet3创建新的工作簿(即Site1)& Sheet4(即Site2)

如果我只想排除其中一张(整体和工作人员)工作正常,但当我尝试排除两张纸时,我的if条件似乎无法正常工作。

以下是代码

{{1}}

P.S。具有OR条件的If语句导致问题。 语法是正确的,但是我无法理解if条件何时与它有OR条件,为什么它不检查条件。

2 个答案:

答案 0 :(得分:3)

尝试切换到Select Case,我认为它更容易理解,将来您还可以更灵活地添加更多工作表名称。

'For Each Sheet In Worksheets
For Each Sheet In ThisWorkbook.Worksheets ' Safer way to qualify the worksheets with the workbook where this code lies

    Select Case Sheet.Name
        Case "Overall", "Staff"
            ' do nothing

        Case Else
            Sheet.Copy
            With ActiveWorkbook
                With .ActiveSheet
                    [A1].Select
                    SheetName = ActiveSheet.Name
                End With
                .SaveAs Filename:=MyFilePath _
                & "\" & SheetName & ".xlsx"
                .Close SaveChanges:=True
            End With
            .CutCopyMode = False

    End Select
Next

注意:我会将Sheet更改为工作表对象的名称,并使用类似Shtws的内容。

答案 1 :(得分:2)

让我们检查你的表情:

If Sheet.Name <> "Overall" Or Sheet.Name <> "Staff" Then

Sheet.Name ==&#34;整体&#34;将 false true 会导致 true

Sheet.Name ==&#34; Staff&#34;将导致 true false 导致 true

的结果

Sheet.Name ==&#34;还有别的&#34;将导致 true true 导致 true

的结果

我认为你喜欢而非

If Sheet.Name <> "Overall" And Sheet.Name <> "Staff" Then

Sheet.Name ==&#34;整体&#34;将 false true 会导致 false

Sheet.Name ==&#34; Staff&#34;将导致 true false 导致 false

的结果

Sheet.Name ==&#34;还有别的&#34;将导致 true true 导致 true

的结果