powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как удалить сразу все скрытые листы?
22 сообщений из 22, страница 1 из 1
Как удалить сразу все скрытые листы?
    #36073645
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем времени суток, и с праздником. Подскажите кто знает, как удалить сразу все скрытые листы? Просто по одному сначала отоброжать а потом удалять напряжно. Их у меня обычно 20-30. заранее спасибо.
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073670
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все сразу? Сотри весь файл и все скрытые листы исчезнут.
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073705
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rnd1111,

Переберите макросом все листы от 1 до 255 по моему
Если свойство скрыт - удаляйте.
Я так делал.
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073780
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, зачем удалять книгу, мне надо что бы отображаемые листы остались.
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073785
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
eualexeyrnd1111,

Переберите макросом все листы от 1 до 255 по моему
Если свойство скрыт - удаляйте.
Я так делал.




Вы можете выложить этот макрос, у меня нет ещё опыта в написании.
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073787
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть надстройка, которая отображает сразу все скрытые листы, может у кого то есть которая удаляет?
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073854
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если нет листов со свойством Visible=xlSheetVeryHidden, попробуй так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim arrSheets As Variant
    ReDim arrSheets( 0 ) As String
    
    With ThisWorkbook
        MsgBox .Worksheets.Count
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        
        For Each ws In .Worksheets
            If ws.Visible <> xlSheetVisible Then
                arrSheets(UBound(arrSheets)) = ws.Name
                ReDim Preserve arrSheets(UBound(arrSheets) +  1 )
            End If
        Next ws
        ReDim Preserve arrSheets(UBound(arrSheets) -  1 )
        .Worksheets(arrSheets).Delete
        
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox .Worksheets.Count
    End With
End Sub

если листы со свойством Visible=xlSheetVeryHidden есть, то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim arrSheets As Variant
    ReDim arrSheets( 0 ) As String
    
    With ThisWorkbook
        MsgBox .Worksheets.Count
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        
        For Each ws In .Worksheets
            If ws.Visible <> xlSheetVisible Then
                arrSheets(UBound(arrSheets)) = ws.Name
                ws.Visible = xlSheetVisible
                ReDim Preserve arrSheets(UBound(arrSheets) +  1 )
            End If
        Next ws
        ReDim Preserve arrSheets(UBound(arrSheets) -  1 )
        .Worksheets(arrSheets).Delete
        
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox .Worksheets.Count
    End With
End Sub
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073903
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL)если нет листов со свойством Visible=xlSheetVeryHidden, попробуй так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim arrSheets As Variant
    ReDim arrSheets( 0 ) As String
    
    With ThisWorkbook
        MsgBox .Worksheets.Count
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        
        For Each ws In .Worksheets
            If ws.Visible <> xlSheetVisible Then
                arrSheets(UBound(arrSheets)) = ws.Name
                ReDim Preserve arrSheets(UBound(arrSheets) +  1 )
            End If
        Next ws
        ReDim Preserve arrSheets(UBound(arrSheets) -  1 )
        .Worksheets(arrSheets).Delete
        
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox .Worksheets.Count
    End With
End Sub

если листы со свойством Visible=xlSheetVeryHidden есть, то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim arrSheets As Variant
    ReDim arrSheets( 0 ) As String
    
    With ThisWorkbook
        MsgBox .Worksheets.Count
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        
        For Each ws In .Worksheets
            If ws.Visible <> xlSheetVisible Then
                arrSheets(UBound(arrSheets)) = ws.Name
                ws.Visible = xlSheetVisible
                ReDim Preserve arrSheets(UBound(arrSheets) +  1 )
            End If
        Next ws
        ReDim Preserve arrSheets(UBound(arrSheets) -  1 )
        .Worksheets(arrSheets).Delete
        
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox .Worksheets.Count
    End With
End Sub



почему то не получается.

Пишет сначала : 1
потом : Run-time '9':
Subscript out of range
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073949
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это означает, что в книге, куда помещен код...
1) только один лист
и
2) нет скрытых листов

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073954
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если надо применять к активной книге, то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim arrSheets As Variant
    ReDim arrSheets( 0 ) As String
    
    With ActiveWorkbook
        MsgBox "Всего листов до удаления скрытых: ".Worksheets.Count
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        
        For Each ws In .Worksheets
            If ws.Visible <> xlSheetVisible Then
                arrSheets(UBound(arrSheets)) = ws.Name
                ReDim Preserve arrSheets(UBound(arrSheets) +  1 )
            End If
        Next ws
        ReDim Preserve arrSheets(UBound(arrSheets) -  1 )
        .Worksheets(arrSheets).Delete
        
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox "Всего листов после удаления скрытых: ".Worksheets.Count
    End With
End Sub

если листы со свойством Visible=xlSheetVeryHidden есть, то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim arrSheets As Variant
    ReDim arrSheets( 0 ) As String
    
    With ActiveWorkbook
        MsgBox "Всего листов до удаления скрытых: ".Worksheets.Count
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        
        For Each ws In .Worksheets
            If ws.Visible <> xlSheetVisible Then
                arrSheets(UBound(arrSheets)) = ws.Name
                ws.Visible = xlSheetVisible
                ReDim Preserve arrSheets(UBound(arrSheets) +  1 )
            End If
        Next ws
        ReDim Preserve arrSheets(UBound(arrSheets) -  1 )
        .Worksheets(arrSheets).Delete
        
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox "Всего листов после удаления скрытых: ".Worksheets.Count
    End With
End Sub
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36073970
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot KL (XL)]Если надо применять к активной книге, то так:

[src vba]Sub RemoveHiddenSheets()
Dim ws As Worksheet
Dim arrSheets As Variant
ReDim arrSheets(0) As String

==> With ActiveWorkbook
MsgBox "Всего листов до удаления скрытых: ".Worksheets.Count
Application.ScreenUpdating = False
Application.DisplayAlerts = False

For Each ws In .Worksheets
If ws.Visible <> xlSheetVisible Then
arrSheets(UBound(arrSheets)) = ws.Name
ReDim Preserve arrSheets(UBound(arrSheets) + 1)
End If
Next ws
ReDim Preserve arrSheets(UBound(arrSheets) - 1)
.Worksheets(arrSheets).Delete



Спасибо, первый макрос заработал, только пришлось удалить строки с меседжбокс. почемуто он их выделял красным.
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36074029
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rnd1111Спасибо, первый макрос заработал, только пришлось удалить строки с меседжбокс. почемуто он их выделял красным.

Потому, что я в спешке пропустил оператор конкатенации:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim arrSheets As Variant
    ReDim arrSheets( 0 ) As String
    
    With ActiveWorkbook
        MsgBox "Всего листов до удаления скрытых: " & .Worksheets.Count
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        
        For Each ws In .Worksheets
            If ws.Visible <> xlSheetVisible Then
                arrSheets(UBound(arrSheets)) = ws.Name
                ReDim Preserve arrSheets(UBound(arrSheets) +  1 )
            End If
        Next ws
        ReDim Preserve arrSheets(UBound(arrSheets) -  1 )
        .Worksheets(arrSheets).Delete
        
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox "Всего листов после удаления скрытых: " & .Worksheets.Count
    End With
End Sub
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #36075720
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL)rnd1111Спасибо, первый макрос заработал, только пришлось удалить строки с меседжбокс. почемуто он их выделял красным.

Потому, что я в спешке пропустил оператор конкатенации:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim arrSheets As Variant
    ReDim arrSheets( 0 ) As String
    
    With ActiveWorkbook
        MsgBox "Всего листов до удаления скрытых: " & .Worksheets.Count
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        
        For Each ws In .Worksheets
            If ws.Visible <> xlSheetVisible Then
                arrSheets(UBound(arrSheets)) = ws.Name
                ReDim Preserve arrSheets(UBound(arrSheets) +  1 )
            End If
        Next ws
        ReDim Preserve arrSheets(UBound(arrSheets) -  1 )
        .Worksheets(arrSheets).Delete
        
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
        MsgBox "Всего листов после удаления скрытых: " & .Worksheets.Count
    End With
End Sub


Спасибо большое. Все зараьотало...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как удалить сразу все скрытые листы?
    #39163441
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, а возможно добавить в этот макрос ещё одну функцию, что бы сначала вся книга сохранялась как значения ( можно только видимые листы сохранить как значения), а потом удалялись скрытые листы.

Буду очень Вам признателен.
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #39163510
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rnd1111,

Вот макрос. Он проходит по всем листам и превращает формулы в значения.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Sub PasteAsValues()
    With ActiveWorkbook
        For Each ws In .Worksheets
            ws.Cells.Copy
            ws.Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Next ws
    End With
End Sub
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #39163918
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Egoр,
Спасибо, но есть вопрос-уточнение. У меня все листы связаны формулами между собой. Не получиться ли так, когда предположим первый лист сохраняется как значения, а на зависимом другом листе, сбиваются формулы? Кстати с какого листа в этом макросе начинает удаляться формулы?
Пы.Сы: а возможен ли такой порядок: выделяются все видимые листы, выделяются в них все строки и столбцы и разом копируется и вставляется обратно как значения?
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #39165368
guestnnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rnd1111... макрос, у меня нет ещё опыта в написании. С тех пор прошло лет 7 ?..
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #39165539
rnd1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guestnnn,

Вы знаете, просто небыло потребности в написании. Вот и не изучался вопрос. Макрос, который мне сдесь любезно выложили, прослужил мне эти 7 лет. За что я очень этому форуму признателен.
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #39171021
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rnd1111,

С формулами и значениями все будет в порядке. Но не проверял, как это будет работать с листами других типов (диаграммы, формы).
В ActiveWorkbook.Worksheets листы отсортированы как ярлычки листов в книге.
Никогда не пробовал делать копи-паст сразу для нескольких листов. Сомневаюсь, что это сработает. У екселя от такого должны мозги закипеть
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #39171808
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rnd1111 Макрос, который мне сдесь любезно выложили, прослужил мне эти 7 лет
Вау! Почувствовалось дыхание вечности :)
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #39171838
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Sub RemoveHiddenSheets()
    Dim ws As Worksheet
    Dim intCnt As Integer, i As Integer
    
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    With ActiveWorkbook
        intCnt = .Worksheets.Count
        'fix values on visible sheets
        For Each ws In .Worksheets
            If ws.Visible = xlSheetVisible Then
                ws.UsedRange.Value = ws.UsedRange.Value
            End If
        Next ws
        'remove hidden sheets
        For i = .Worksheets.Count To 1 Step -1
            If .Worksheets(i).Visible <> xlSheetVisible Then
                .Worksheets(i).Visible = True
                .Worksheets(i).Delete
            End If
        Next i
        intCnt = intCnt - .Worksheets.Count
    End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
        
    MsgBox "Removed " & intCnt & " sheets!"
End Sub
...
Рейтинг: 0 / 0
Как удалить сразу все скрытые листы?
    #39172847
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, KL (XL)!

много где использовал ...value = ...value, а тут всегда зачем-то через буфер обмена делал. :)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как удалить сразу все скрытые листы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]