VBA.Как исключить скрыть лист из этого кода экспорта? - PullRequest
0 голосов
/ 13 ноября 2018
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 только с 1 листом внутри, но я не хочу включать те листы, которые скрываются, но я не могу удалить их, потому что они понадобятся мне в следующий раз.

1 Ответ

0 голосов
/ 13 ноября 2018

Если вы хотите копировать только видимые листы, то почему бы не копировать только видимые листы?

Разве вы не можете сделать что-то вроде:

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

Или вы хотите сказать, что хотитескопировать скрытые листы, но остаются ли они скрытыми в целевой книге?В этом случае вы можете установить свойство Visible после создания нового листа.

Или вы можете использовать Worksheet.Copy для копирования листов, а не для копирования и вставки содержимого листа.Это будет более эффективным, так как избавит от необходимости использовать буфер обмена.

...