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

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

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




Вы можете выложить этот макрос, у меня нет ещё опыта в написании.
...
Рейтинг: 0 / 0
05.07.2009, 13:58
    #36073787
rnd1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить сразу все скрытые листы?
У меня есть надстройка, которая отображает сразу все скрытые листы, может у кого то есть которая удаляет?
...
Рейтинг: 0 / 0
05.07.2009, 16:07
    #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
05.07.2009, 17:39
    #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
05.07.2009, 18:59
    #36073949
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить сразу все скрытые листы?
Это означает, что в книге, куда помещен код...
1) только один лист
и
2) нет скрытых листов

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
05.07.2009, 19:04
    #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
05.07.2009, 19:26
    #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
05.07.2009, 20:21
    #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
06.07.2009, 16:58
    #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
Период между сообщениями больше года.
05.02.2016, 03:52
    #39163441
rnd1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить сразу все скрытые листы?
Здравствуйте, а возможно добавить в этот макрос ещё одну функцию, что бы сначала вся книга сохранялась как значения ( можно только видимые листы сохранить как значения), а потом удалялись скрытые листы.

Буду очень Вам признателен.
...
Рейтинг: 0 / 0
05.02.2016, 09:10
    #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
05.02.2016, 13:54
    #39163918
rnd1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить сразу все скрытые листы?
Egoр,
Спасибо, но есть вопрос-уточнение. У меня все листы связаны формулами между собой. Не получиться ли так, когда предположим первый лист сохраняется как значения, а на зависимом другом листе, сбиваются формулы? Кстати с какого листа в этом макросе начинает удаляться формулы?
Пы.Сы: а возможен ли такой порядок: выделяются все видимые листы, выделяются в них все строки и столбцы и разом копируется и вставляется обратно как значения?
...
Рейтинг: 0 / 0
08.02.2016, 11:34
    #39165368
guestnnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить сразу все скрытые листы?
rnd1111... макрос, у меня нет ещё опыта в написании. С тех пор прошло лет 7 ?..
...
Рейтинг: 0 / 0
08.02.2016, 14:02
    #39165539
rnd1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить сразу все скрытые листы?
guestnnn,

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

С формулами и значениями все будет в порядке. Но не проверял, как это будет работать с листами других типов (диаграммы, формы).
В ActiveWorkbook.Worksheets листы отсортированы как ярлычки листов в книге.
Никогда не пробовал делать копи-паст сразу для нескольких листов. Сомневаюсь, что это сработает. У екселя от такого должны мозги закипеть
...
Рейтинг: 0 / 0
15.02.2016, 20:54
    #39171808
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить сразу все скрытые листы?
rnd1111 Макрос, который мне сдесь любезно выложили, прослужил мне эти 7 лет
Вау! Почувствовалось дыхание вечности :)
...
Рейтинг: 0 / 0
15.02.2016, 21:43
    #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
17.02.2016, 09:35
    #39172847
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить сразу все скрытые листы?
Спасибо, KL (XL)!

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


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