Доброго времени суток, имеется макрос который ставит пароль защиту листа. вопрос, если в книге 65 листов из них примерно 90% скрыто, то если макрос ставит пароль на последний лист он изначально перебирает все листы, просто у меня долго грузится файл может причина в этом и мне нужно мой лист переместить в начало книги???? файл примерно 30 мегабайт, есть только текст, картинок и других медиа нету , макрос ставит пароль на 4 листа, и они почти все в конце книги Изменено: greatsky - 7 Авг 2016 21:38:25
ОТВЕТЫ: 7 Авг 2016 21:40:58
greatsky написал: если макрос ставит пароль на последний лист он изначально перебирает все листы
А зачем перебирать? Ставьте пароль на конкретный лист.
greatsky написал: может причина в этом и мне нужно мой лист переместить в начало книги?
Нет, причина явно не в этом. Нужно почистить книгу, ужать картинки и сохранить книгу в формате XLSB Выложите файл на какой-нибудь внешний ресурс, создайте новую тему и в ней дайте ссылку на файл, если, конечно, там ничего военного в данных нет. Изменено: ZVI - 8 Авг 2016 06:55:27
greatsky написал: А зачем перебирать? Ставьте пароль на конкретный лист.
Код
Private Sub Workbook_Open()
'включаем защиту первого листа для пользователя, но не макроса
Sheets("Комплектация").Protect Password:="2505", UserinterfaceOnly:=True, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering:=True
'второй лист защищаем аналогично, но с возможностью пользоваться группировкой
Worksheets("кухня расчет").EnableOutlining = True
Worksheets("кухня расчет").Protect Password:="2505", UserinterfaceOnly:=True
'Расшифровка ящиков
Sheets("Расшифровка ящиков").Protect Password:="2505", UserinterfaceOnly:=True, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering:=True
'Распил исх.
Sheets("Распил исх").Protect Password:="2505", UserinterfaceOnly:=True, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering:=True
'Сборка исх.
Sheets("Сборка исх.").Protect Password:="2505", UserinterfaceOnly:=True, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering:=True
End Sub
greatsky написал: Нужно почистить книгу, ужать картинки и сохранить книгу в формате XLSBКартинок нет, других медия тоже нет, один формулы и текст, все уже лишнее удалено, открывается ровно минуту, данные не военные, но и не для общего пользования
greatsky написал: Нужно почистить книгу, ужать картинки и сохранить книгу в формате XLSB
Картинок нет, других медия тоже нет, один формулы и текст, все уже лишнее удалено, открывается ровно минуту, данные не военные, но и не для общего пользования
greatsky, не видя файла трудно что-либо предложить. 1) 30 МБ - это размер сжатого файла, при открытии он занимает больше памяти 2) попробуйте включить ручной пересчёт формул, чтобы пересчитывались, только при сохранении 3) возможно стоит пересмотреть подход к организации данных (либо разбить файл на несколько (справочники, расчёты), либо переходить на аксес+эксель)
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
JayBhagavan, подход пересмотрел, с помощью вашего макроса. удалось ужать файл с 58 до 33 МБ, данные значительно лучше собираются и группируются, это убрало много проблем но к моему разочарованию, время на сохранение и открытие не значительно сократилось, вот я и подумал, может он так долго исходный код обрабатывает
Это достаточно сложно, мне важно узнать все ли верно в макросе, который устанавливает пароли, так как без него она шустрее открывается, и если для файла 30 мб, такая скорость загрузки это норма, тогда ж придется ждать что поделать, переделывать структуру - месяца 2) так как создавалось все это месяца три, с 10-до 10 почти каждый день, в любом случае форумчане много чего помогли и файлик выглядит куда оптимальней чем изначально
Там примерно 2 млн. формул) это почти 96% процентов данных) поэтому скопировать быстро на просто данные не получиться, так как он сразу станет легким, конечно, теперь видя всю картину в целом. можно оптимизировать, но изначально не понятно вообще что получится и получится ли что-нибудь вообще
В Excel 2013 / 2016 алгоритм защиты данных значительно сильнее, чем в предыдущих версиях. Но это же приводит и к увеличению времени обработки. Имеет смысл тогда открыть книгу в Excel 2010 для сравнения и, возможно, перейти на эту версию. Попробуйте еще защитить без пароля, может это ускорит процесс. Имеет также смысл отключить пересчет формул при загрузке.
А радикальным многократным ускорением при таком количестве формул (похоже, что с ВПР) может быть использование макросов. Если формулы в столбце (построчно) одинаковые, то переход на макросы можно упростить: записывать макросом в столбец формулу и затем менять результат на значения. При этом размер файла уменьшится значительно и "формульное понимание" логики расчетов останется, хотя чисто макросами без формул можно было бы получить лучшее быстродействие. Без примера с формулами трудно посоветовать что-то более конкретное. Непонятно даже, какой формат книги используется и помог ли XLSB формат в ускорении загрузки.