Страницы: 1
RSS
Долго открывается книга, как можно оптимизировать?
 
Доброго времени суток, имеется макрос который ставит пароль защиту листа. вопрос, если в книге 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 - 08.08.2016 10:35:54
 
И что?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
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 - 08.08.2016 10:38:02
 
Цитата
greatsky написал:
Нужно  почистить  книгу,  ужать  картинки и сохранить книгу в формате XLSB
Картинок нет, других медия тоже нет, один формулы и текст, все уже лишнее удалено, открывается ровно минуту, данные не военные, но и не для общего пользования
 
greatsky, не видя файла трудно что-либо предложить.
1) 30 МБ - это размер сжатого файла, при открытии он занимает больше памяти
2) попробуйте включить ручной пересчёт формул, чтобы пересчитывались, только при сохранении
3) возможно стоит пересмотреть подход к организации данных (либо разбить файл на несколько (справочники, расчёты), либо переходить на аксес+эксель)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, подход пересмотрел, с помощью вашего макроса. удалось ужать файл с 58 до 33 МБ, данные значительно лучше собираются и группируются, это убрало много проблем но к моему разочарованию, время на сохранение и открытие не значительно сократилось, вот я и подумал, может он так долго исходный код обрабатывает  
 
Цитата
greatsky написал: один формулы и текст, все уже лишнее удалено
вполне возможно, что формулы рассчитываются долго, помимо большого веса непосредственно файла.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
greatsky написал: данные не военные, но и не для общего пользования
Тогда замените их на нейтральные.
 
Цитата
Юрий М написал: Тогда замените их на нейтральные.
Это достаточно сложно, мне важно узнать все ли верно в макросе, который устанавливает пароли, так как без него она шустрее открывается, и если для файла 30 мб, такая скорость загрузки это норма, тогда ж придется ждать что поделать, переделывать структуру - месяца 2) так как создавалось все это месяца три, с 10-до 10 почти каждый день, в любом случае форумчане много чего помогли и файлик выглядит куда оптимальней чем изначально  
Изменено: greatsky - 08.08.2016 23:59:23
 
Цитата
Юрий М написал: замените их на нейтральные.
Цитата
greatsky написал: Это достаточно сложно
Ничего сложного: Ctrl+H и меняем патроны на огурцы ))
А вообще, раз у Вас там куча формул, попробуйте заменить их вычислением в самом макросе.
 
Там примерно 2 млн. формул) это почти 96% процентов данных) поэтому скопировать быстро на просто данные  не получиться, так как он сразу станет легким, конечно, теперь видя всю картину в целом. можно оптимизировать, но изначально не понятно вообще что получится и получится ли что-нибудь вообще  
Изменено: greatsky - 08.08.2016 12:35:27
 
Цитата
greatsky написал: Там примерно 2 млн. формул
и при этом ждете быстрой работы?
 
В Excel 2013 / 2016 алгоритм защиты данных значительно сильнее, чем в предыдущих версиях.
Но это же приводит и к увеличению времени обработки.
Имеет смысл тогда открыть книгу в Excel 2010 для сравнения и, возможно, перейти на эту версию.
Попробуйте еще защитить без пароля, может это ускорит процесс.
Имеет также смысл отключить пересчет формул при загрузке.

А радикальным многократным ускорением при таком количестве формул (похоже, что с ВПР) может быть использование макросов.
Если формулы в столбце (построчно) одинаковые, то переход на макросы можно упростить: записывать макросом в столбец формулу и затем менять результат на значения. При этом размер файла уменьшится значительно и "формульное понимание" логики расчетов останется, хотя чисто макросами без формул можно было бы получить лучшее быстродействие. Без примера с формулами трудно посоветовать что-то более конкретное. Непонятно даже, какой формат книги используется и помог ли XLSB формат в ускорении загрузки.
Изменено: ZVI - 09.08.2016 04:16:51
Страницы: 1
Читают тему
Наверх