【问题标题】:VBA. How to exclude hide sheet from this export code?VBA。如何从此导出代码中排除隐藏表?
【发布时间】:2018-11-13 02:28:15
【问题描述】:
Sub SaveShtsAsBook() 
    ‘Select all visible and hide sheet’
    Dim Sheet As Worksheet, SheetName$, MyFilePath$, N& 
    MyFilePath$ = ActiveWorkbook.Path & "\" & _ 
    Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4) 
    With Application 
        .ScreenUpdating = False 
        .DisplayAlerts = False 
         '      End With
        On Error Resume Next '<< a folder exists
        MkDir MyFilePath '<< create a folder
        For N = 1 To Sheets.Count 
            Sheets(N).Activate 
            SheetName = ActiveSheet.Name 
            Cells.Copy 
            Workbooks.Add (xlWBATWorksheet) 
            With ActiveWorkbook 
                With .ActiveSheet 
                    .Paste 
                    .Name = SheetName 
                    [A1].Select 
                End With 
                 'save book in this folder
                .SaveAs Filename:=MyFilePath _ 
                & "\" & SheetName & ".xlsx" 
                .Close SaveChanges:=True 
            End With 
            .CutCopyMode = False 
        Next 
    End With 
    Sheet1.Activate 
End Sub 

我想创建一个单独的 Excel 工作簿,里面只有一张工作表,但我不想包括那些隐藏的工作表,但我不能删除它们,因为我下次需要它们。

【问题讨论】:

    标签: vba show-hide


    【解决方案1】:

    如果你只想复制可见的工作表,那为什么不只复制可见的工作表呢?

    你不能这样做吗:

    For N = 1 To Sheets.Count 
        If Sheets(N).Visible = xlSheetVisible Then
             ... Copy the sheet
        End It
    Next N
    

    或者你的意思是你想复制隐藏的工作表,但让它们在目标工作簿中保持隐藏状态?在这种情况下,您可以在创建新工作表后设置 Visible 属性。

    或者您可能会考虑使用Worksheet.Copy 来复制工作表,而不是复制和粘贴工作表内容。这样会更有效,因为它可以避免使用剪贴板。

    【讨论】:

    • 感谢您的及时回复。我有一个工作簿,其中包含许多可见和隐藏的工作表。我只想将每个可见工作表导出到单个工作簿。上面的当前代码可以导出工作簿中的所有工作表,但之后我必须逐个删除它们。希望能解释我的情况。
    • @cheesengng - 当你说“不起作用”时,会发生什么?您的代码还有其他潜在问题,您可以通过使用 Worksheet.Copy 而不是剪切/粘贴来解决这些问题。使用剪切/粘贴要求您始终保持正确的工作表处于活动状态,我不确定您的代码是否属于这种情况:在您致电 Workbooks.Add 后,您似乎立即使用 ActiveSheet 进行粘贴,这可能不是您认为的工作表。
    • 代码本身工作正常,但此代码也会导出那些隐藏的工作表。我不知道如何将您的代码修改为我当前的代码。请帮忙
    猜你喜欢
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2016-02-29
    • 2015-04-29
    • 2012-03-14
    • 2014-10-24
    相关资源
    最近更新 更多