powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ПОсоветуйте способ сохранения листов
20 сообщений из 20, страница 1 из 1
ПОсоветуйте способ сохранения листов
    #36166046
newnoober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Задача звучит следующим образом: по нажатию на кнопку нужно сохранить листы (какую-то их чать) из книги в новую книгу.

Сложность состоит в ... быстродействии.
На листах есть формулы, есть объедененные ячейки. Нужно сохранить данные листа в значениях + форматы. + настройки станицы.
Первый вариант: Если создавать новую книгу и туда последовательно копировать данные (сначала вставляем всё, затем тольок значения), а потом все свойства PageSetup порировать с одной книги в другую....
при большом объеме данных в листах эта операция занимает достаточно много времени. Даже на "современном" компьюторе ( в зависимости от числа листов и объемов данных ) данный вариант сохранения работает очень долго.

Второй вариант:
Код: plaintext
1.
            Sheets(arr_shtName).Copy
            ActiveWorkbook.SaveAs (file)
arr_shtName - массив имен листов для копирования в активной книге
file - полное имя новой книги для сохранения
Этот способ не имеет проблем с временем выполения, но естьодин побочный эффект - в сохраненных листах не должно быть данных в модулях листов (а в первоначальной книге они есть).

По итогу:
1 есть ли возможность у Sheets(arr_shtName).Copy не переносить данные модуля копируемых листов?
2 есть ли возможность программно "ставить галочку" в настройках безопасности "доверять доступ к Visual Basic Project", чтобы можно было почистить модули листов в новой книге. (понимаю, что звучит обсурдно,.. но вдруг такой доступ можно дать для доступа к вновь созданной книге)
3 ...оптимизация первого варианта решения
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36168217
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть убрать из листов код?

что такого, что нельзя перенести в модуль книги?
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36168613
GresOfBase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newnoober,

Есть возможность записать макрос при производстве такой ручной операции:
1. Мышью указываешь на участок листа на пересечении заголовков строк и столбцов и там кликаешь. У тебя выделяется весь рабочий лист.
2. Здесь говоришь Экселю <CTRL+С>, т.е. копируешь целиком весь лист в буфер.
3. Переходишь на другой лист в этой же кнгие (это для корректной записи макроса)
4. Встаешь на ячейку "А1"
5. Говоришь экселю <Ctrl+V>, т.е. вставляешь весь лист целиком.
Причем при таком способе копирования копируются не только значения (и формулы) ячеек, но и формат ячеек. Код листа никаким образом не затрагивается.
6. Сохраняешь полученный записанный макрос и изучаешь с внесением изменения на предмет переноса в другую книгу.

Все должно хорошо работать. Удачи!
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36182174
newnoober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_slan_может быть убрать из листов код?

что такого, что нельзя перенести в модуль книги?
- Обработчик событий листа.


GresOfBase, "говоришь Экселю <CTRL+С>" и "Говоришь экселю <Ctrl+V>". - в каком месте копировать настройки страницы?
<CTRL+С> & <Ctrl+V> - при большом кол-ве листов и большом объеме данных на листах теряем ОЧЕНЬ МНОГО времени :( (в этом и есть проблема)
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36182371
Lost Jonny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в начале макроса используйте:
Код: plaintext
1.
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

И гораздо все быстрее. Конечно, в конце макроса, вернуть все обратно:
Код: plaintext
1.
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36182576
newnoober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lost JonnyА в начале макроса используйте:
Код: plaintext
1.
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

И гораздо все быстрее. Конечно, в конце макроса, вернуть все обратно:
Код: plaintext
1.
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic



Calculation и ScreenUpdating использую почти всегда.
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36183051
GresOfBase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newnoober,
пункты с 1-го по 5-й выполняются в режиме записи макроса. 6-м пунктом макрос сохраняется.
копирование и вставка должны быть выполнена целиком листа, т.е. надо выделить весь лист. Весь лист выделяется мышиным кликом на пересечении заголовков строк и столбцов, т.е. на прямоугольнике, расположенном сразу под адресной областью.
После сохранения макроса можно посмотреть код, который запишет Excel, и выбрать необходимые команды для использования в своих процедурах.
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36183284
Lost Jonny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
newnoober,

Отлично, давайте пример файла - и какие листы копирнуть в новую книгу - и засечем время.
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36183339
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Макрос можно удалить макросом:
http://msoffice.nm.ru/faq/macros/module.htm#faq47
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36183343
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, и там же ниже:
Для того, чтобы удалить из текущей рабочей книги : все стандартные модули, модули класса, UserForm, а также программный код из всех модулей листа, книги, достаточно использовать любой из нижеопубликованных примеров (VBProject не должен быть защищён) :

http://msoffice.nm.ru/faq/macros/module.htm#faq417
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36184353
GresOfBase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newnoober,

Где можно взять исходный файл для анализа?
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36184906
newnoober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 GresOfBase
Проблем с кодированием нет. Задача была в поиски оптимального решения для оптимизации затрат времени.

2 Lost Jonny, GresOfBase
Второй день после недельного отпуска. Ещё не дошел до этой книжки. Возьму последний вариант и выложу книжку завтра.

2 Hugo121
Спасибо за помощь. Но проблема не в коде удаления макросов, есть проблемы с "привередливостью" задания.. -
"2 есть ли возможность программно "ставить галочку" в настройках безопасности "доверять доступ к Visual Basic Project" "
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36185478
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я думаю, после копирования листов с макросами в новую книгу, можно сразу в ней удалить макросы этих листов. Или иначе - сперва удалить, затем копировать. Разве не это нужно?
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36185673
newnoober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121Как я думаю, после копирования листов с макросами в новую книгу, можно сразу в ней удалить макросы этих листов. Или иначе - сперва удалить, затем копировать. Разве не это нужно?
Вы правильно думаете. Вы не правильно поняли что нужно.


Архив книжки с примером (и листами для копирования) весит больше 2Мб. На форуме максимальный размер 100Kb.
Потому, извините - не смогу віложить.
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36185746
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По итогу:
1 есть ли возможность у Sheets(arr_shtName).Copy не переносить данные модуля копируемых листов?
- есть
2 есть ли возможность программно "ставить галочку" в настройках безопасности "доверять доступ к Visual Basic Project", чтобы можно было почистить модули листов в новой книге. - зачем чистить то, чего нет
3 ...оптимизация первого варианта решения - ?
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36187166
newnoober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121 По итогу:
1 есть ли возможность у Sheets(arr_shtName).Copy не переносить данные модуля копируемых листов?
- есть

какой?
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36187186
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну тестить код я сейчас не буду, сам такого не делал, но по ссылкам выше думаю надо сперва удалить из этих листов код, потом копировать (из копии файла, или не сохранять исходный файл после удаления кода или .... ну варианты можно придумать, главное что можно программно удалить макрос)
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36187242
newnoober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121Ну тестить код я сейчас не буду, сам такого не делал, но по ссылкам выше думаю надо сперва удалить из этих листов код, потом копировать (из копии файла, или не сохранять исходный файл после удаления кода или .... ну варианты можно придумать, главное что можно программно удалить макрос)

Спасибо за попытку помочь. Всего доброго.
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36187283
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newnooberПо итогу:
1 есть ли возможность у Sheets(arr_shtName).Copy не переносить данные модуля копируемых листов?
2 есть ли возможность программно "ставить галочку" в настройках безопасности "доверять доступ к Visual Basic Project", чтобы можно было почистить модули листов в новой книге. (понимаю, что звучит обсурдно,.. но вдруг такой доступ можно дать для доступа к вновь созданной книге)
3 ...оптимизация первого варианта решения
1 - нет, нельзя.
2 - есть решения, но они зависят от версии и языка клиентского Экселя. Не удобно, не надежно, и опасно (макровирусы никто к сожалению не отменял).
3 - а это можно:

События листа не обязательно хранить в модуле листа. Можно извратится например так как показано в аттаче.
...
Рейтинг: 0 / 0
ПОсоветуйте способ сохранения листов
    #36187859
newnoober
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlСобытия листа не обязательно хранить в модуле листа. Можно извратится например так как показано в аттаче.

Спасибо большое, интересная альтернатива.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ПОсоветуйте способ сохранения листов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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