powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Альтернатива SpecialCells для защищенного листа
18 сообщений из 18, страница 1 из 1
Альтернатива SpecialCells для защищенного листа
    #39514185
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Есть защищенный лист. Данных очень много. Надо получить область со всеми непустыми ячейками. Значения ячеек доступны макросу, но функция SpecialCells вылетает с ошибкой (из-за защиты). Как быть? Снять защиту не предлагать :)

Интересно даже, почему SpecialCells не работает? Ведь обычным циклом я могу собрать эти ячейки. Но конечно хочется побыстрее.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514188
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождя,
Код: vbnet
1.
ActiveSheet.UsedRange

пробовал?
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514210
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CurskyСын вождя,
Код: vbnet
1.
ActiveSheet.UsedRange

пробовал?
Попробуй мне быстро найти непустые ячейки здесь:
Код: vbnet
1.
2.
3.
4.
5.
Dim SH As Worksheet
    Set SH = Excel.Workbooks.Add.Sheets(1)
    SH.Cells(1, 1).Value = 1
    SH.Cells(SH.Rows.Count, SH.Columns.Count).Value = 2
    SH.UsedRange.Select ' :))))))))))))
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514263
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождя,

Не знаю на сколько быстро/ресурсозатратно, но что если весь лист в массив и уже проверять массив...ну или сначало UsedRange, а потом массив...как-то так.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514303
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyНе знаю на сколько быстро/ресурсозатратно, но что если весь лист в массив и уже проверять массив...
Да, руками можно что-то сделать. Но функции Excel работают очень быстро. Вот и хочу найти подходящие.

Та же сортировка массива, в несколько раз быстрее через лист Excel, чем тасованием массива макросом.

CountA и CountBlank выполняются мгновенно, независимо от объема данных. Значит проблема в SpecialCells.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514357
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождя,

A1 = 1, A1048576 = 2

Код: 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.
Option Explicit

Sub Test()

Dim wb As Workbook
Dim sh As Worksheet
Dim rn As Range
Dim arr() As Variant
Dim k As Long

Set wb = ThisWorkbook
Set sh = wb.Sheets(1)
Set rn = sh.UsedRange

arr = rn

For k = 1 To UBound(arr)
    If arr(k, 1) <> "" Then
        Debug.Print arr(k, 1)
    End If
        
Next

End Sub



Работает очень быстро.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514369
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidy...Работает очень быстро.
Быстро, но не работает :)

При копировании области в массив, Excel имеет ограничение в 65536 ячеек. В последней версии Excel, ячеек 16 777 216.

Нужны не только значения, а еще и область с ячейками. Нужна альтернатива, сравнимая по скорости с SpecialCells(xlCellTypeConstants).
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514403
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождя,

Когда речь заходит о работе софта на пределе его возможностей, невольно приходит в голову мысль, а правильно ли выбран инструмент...
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514415
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidy...а правильно ли выбран инструмент...
Инструмент устраивает. Не вижу подходящего инструмента этого инструмента :)

Тестирую на словаре в 200 000 слов. Ничего особенного.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514423
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождяiMrTidy...а правильно ли выбран инструмент...
Инструмент устраивает. Не вижу подходящего инструмента этого инструмента :)

Тестирую на словаре в 200 000 слов. Ничего особенного.

SQL?
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514598
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождяЕсть защищенный лист... функция SpecialCells вылетает с ошибкой (из-за защиты). Как быть? Снять защиту не предлагать
Достаточно (пере)защитить с UserInterfaceOnly:=True
Код: vbnet
1.
2.
3.
4.
5.
6.
Sub Test()
  With ActiveSheet
    .Protect UserInterfaceOnly:=True ', Password:="123"
    Debug.Print .UsedRange.SpecialCells(xlCellTypeConstants).Count
  End With
End Sub
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514599
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тэги и в предыдущем сообщении лишние:
Код: vbnet
1.
2.
3.
4.
5.
6.
Sub Test()
  With ActiveSheet
    .Protect UserInterfaceOnly:=True ', Password:="123"
    Debug.Print .UsedRange.SpecialCells(xlCellTypeConstants).Count
  End With
End Sub
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514704
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVI...(пере)защитить...
Это снятие защиты, а там может быть пароль. Пишется макрос для общего пользования.

Для работы, макросу требуются значения ячеек и их область. Все это макросу доступно при любой защите (поправьте, если есть защита, когда макросом ничего не считать). Но некоторые функции Excel, которые ничего не меняют на листе, почему-то не работают :(

Может кто-то составлял список, что работает в защите, а что нет? Логики я не вижу. Проверить можно только опытным путем :(
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39514722
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождя,

Учитывая, что любая защита снимается в течение секунды, можно делать временную копию исходника, снимать на нем все защиты, делать все что нужно, а затем уничтожать.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39515403
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождяЭто снятие защиты, а там может быть пароль. Пишется макрос для общего пользования.
В предложенном варианте нет снятия защиты ни на мгновение: .Protect UserInterfaceOnly:=True ', Password:="123"
Предполагается, что лист уже был защищен, а этот код повторной защиты открывает полный доступ лищь для VBA, но не для ручных действий пользователя.
Понятно, что если лист защищен паролем, а пароль коду неизвестен, то предложенный вариант не "прокатит", что вообще-то и правильно.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39515562
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ZVI]Сын вождя...В предложенном варианте нет снятия защиты ни на мгновение...
Ага, а книгу почему-то предлагает сохранить, как измененную :)

Народ, речь не о снятии защиты вообще. Нужен алгоритм быстрой обработки листа под защитой. Без извращений. Стандартными средствами. Как я понял, таких в Excel нет. Остается оптимизировать костыли.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39515628
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Сын вождя]ZVIпропущено...

Ага, а книгу почему-то предлагает сохранить, как измененную :)

Народ, речь не о снятии защиты вообще. Нужен алгоритм быстрой обработки листа под защитой. Без извращений. Стандартными средствами. Как я понял, таких в Excel нет. Остается оптимизировать костыли.

Сохранить предлагает, потому что раньше защита распространялась еще и на доступ к ячейкам через VBA, а теперь только через интерфейс. После того, как данные обработаны, поменяйте флаг на исходный.
...
Рейтинг: 0 / 0
Альтернатива SpecialCells для защищенного листа
    #39516073
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сын вождяАга, а книгу почему-то предлагает сохранить, как измененную :)
Это не причем. Много чего меняет свойство Saved книги.
Например, любая формула динамического диапазона типа = A1: ИНДЕКС(A:A;СЧЁТЗ(A:A)) пересчитывается при загрузке книги и Excel спросит о сохранении книги с такой формулой. И это никак не связано с защитой.
Если смущает, то ActiveWorkbook.Saved = True
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub Test1()
  Dim IsSaved As Boolean
  ' Запомнить статус Saved книги
  IsSaved = ActiveWorkbook.Saved
  ' Защитить с доступом из VBA
  With ActiveSheet
    .Protect UserInterfaceOnly:=True ', Password:="123"
    Debug.Print .UsedRange.SpecialCells(xlCellTypeConstants).Count
  End With
  ' Восстановить статус Saved книги
  ActiveWorkbook.Saved = IsSaved
End Sub
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Альтернатива SpecialCells для защищенного листа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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