Добрый день форумчане! Есть потребность: После определенной обработки в файле эксель имеется лист "Тексты" с результатами. Последним шагом надо все эти результаты с листа сохранить в отдельный файл для выгрузки на сервер. С первой по десятую строчку включительно идет общая шапка (названия столбцов и т.п.) С одиннадцатой строки и далее идут результаты. Их может быть всегда разное количество - и 500 и 10 000 строк. Надо каким то образом написать макрос, который бы сохранял именно значения этого листа (т.к. там формулы) в новые отдельные файлы, но так, что шапка и не более 1000 строк значений идет в один файл. Сложность определения заполненных ячеек для меня заключается в том, что в них формулы. Т.е. заполнено 10 000 строк формулами, но по их расчетам данных отражаться может только в первых 3000 строк, в остальных формулы показывают ничего.
Т.е. если у нас 4896 значений, то в результате будет сохранено 4 файла по 1000 значений и 1 на 896 значений. При этом шапка листа (она фиксировано с первой по 10 строку) везде одинаковая. Имена файлов могут быть вида Готовый1.xls Готовый2.xls Готовый3.xls и т.д. в зависимости от их количества. Формат файла "xls" Файлы можно сохранять в одну папку например "Итог обработки" на рабочем столе, если ее нет - то создавать ее.
У меня получалось сделать только что бы все разом сохранялось в отдельный файл, а как сделать требуемую разбивку в зависимости от количества значений - не знаю уже. Под силу кому нибудь сделать простой макрос, который бы я повесил на кнопку?
Добрый день форумчане! Есть потребность: После определенной обработки в файле эксель имеется лист "Тексты" с результатами. Последним шагом надо все эти результаты с листа сохранить в отдельный файл для выгрузки на сервер. С первой по десятую строчку включительно идет общая шапка (названия столбцов и т.п.) С одиннадцатой строки и далее идут результаты. Их может быть всегда разное количество - и 500 и 10 000 строк. Надо каким то образом написать макрос, который бы сохранял именно значения этого листа (т.к. там формулы) в новые отдельные файлы, но так, что шапка и не более 1000 строк значений идет в один файл. Сложность определения заполненных ячеек для меня заключается в том, что в них формулы. Т.е. заполнено 10 000 строк формулами, но по их расчетам данных отражаться может только в первых 3000 строк, в остальных формулы показывают ничего.
Т.е. если у нас 4896 значений, то в результате будет сохранено 4 файла по 1000 значений и 1 на 896 значений. При этом шапка листа (она фиксировано с первой по 10 строку) везде одинаковая. Имена файлов могут быть вида Готовый1.xls Готовый2.xls Готовый3.xls и т.д. в зависимости от их количества. Формат файла "xls" Файлы можно сохранять в одну папку например "Итог обработки" на рабочем столе, если ее нет - то создавать ее.
У меня получалось сделать только что бы все разом сохранялось в отдельный файл, а как сделать требуемую разбивку в зависимости от количества значений - не знаю уже. Под силу кому нибудь сделать простой макрос, который бы я повесил на кнопку?scaels1
Привет! Макрос делает все в точности, как у тебя написано, т.е. полностью готовое решение. (с перехватом исключений) Запускается по Ctrl+e (в английской раскладке)
Привет! Макрос делает все в точности, как у тебя написано, т.е. полностью готовое решение. (с перехватом исключений) Запускается по Ctrl+e (в английской раскладке)KSV
Привет! Макрос делает все в точности, как у тебя написано, т.е. полностью готовое решение. (с перехватом исключений) Запускается по Ctrl+e (в английской раскладке)
Привет! Все круто! И как я понял - копируются именно строки и кол-во столбцов не важно. Спасибо! А что значит с перехватом исключений - это что имеется ввиду?
Не совсем понял - а как выделять только не пустые ячейки, где есть значения при расчете формул? Надо для выделения диапазона в других используемых макросах - что бы не выделять и не копировать весь возможный заданный диапазон, а только ту его часть, которая заполнена.
Привет! Макрос делает все в точности, как у тебя написано, т.е. полностью готовое решение. (с перехватом исключений) Запускается по Ctrl+e (в английской раскладке)
Привет! Все круто! И как я понял - копируются именно строки и кол-во столбцов не важно. Спасибо! А что значит с перехватом исключений - это что имеется ввиду?
Не совсем понял - а как выделять только не пустые ячейки, где есть значения при расчете формул? Надо для выделения диапазона в других используемых макросах - что бы не выделять и не копировать весь возможный заданный диапазон, а только ту его часть, которая заполнена.scaels1
А что значит с перехватом исключений - это что имеется ввиду?
Если, вдруг, когда-то возникнет ошибка (хотя, не должна), то пользователю будет выведен диалог с кнопками "Прервать", "Повторить" и "Пропустить". Там же можешь дописать свой обработчик ошибок, если вдруг понадобится.
А что значит с перехватом исключений - это что имеется ввиду?
Если, вдруг, когда-то возникнет ошибка (хотя, не должна), то пользователю будет выведен диалог с кнопками "Прервать", "Повторить" и "Пропустить". Там же можешь дописать свой обработчик ошибок, если вдруг понадобится.
вкратце - у тебя в столбце A не формулы, а значения, вот, по нему и определяется последняя заполненная строка
Да, это в примере, где я 1 лист приложил из-за размеров файла, так и есть, а в исходном - т.е. рабочем - в этом столбце А тоже формула идет, которая ставит значением этот номер, если соответствующие данные на другом листе есть. А если данных на последующие ячейки нету - тогда так же ставит пустоту "" . Этот нюанс как то влияет на работу макроса? (еще не успел его интегрировать, только вот собирался это делать садиться)
вкратце - у тебя в столбце A не формулы, а значения, вот, по нему и определяется последняя заполненная строка
Да, это в примере, где я 1 лист приложил из-за размеров файла, так и есть, а в исходном - т.е. рабочем - в этом столбце А тоже формула идет, которая ставит значением этот номер, если соответствующие данные на другом листе есть. А если данных на последующие ячейки нету - тогда так же ставит пустоту "" . Этот нюанс как то влияет на работу макроса? (еще не успел его интегрировать, только вот собирался это делать садиться)scaels1
Залил я макрос в рабочий файл. Вот что получилось: В листе "Тексты" формулы были растянуты на 10000 строк. 1. Если значений там вообще нет - создано 10 пустых файлов с шапкой. 2. Если там было 3680 значений - создано 10 файлов. 4 из которых с информацией как надо, а 6 - пустых.
т.е. несмотря на отсутствие значений он все равно берет в обработку все строки, в которые растянута формула. Ориентироваться а столбец А можно - он в первую очередь заполняется, но вот как подправить - что бы пустые файлы не создавались?
Залил я макрос в рабочий файл. Вот что получилось: В листе "Тексты" формулы были растянуты на 10000 строк. 1. Если значений там вообще нет - создано 10 пустых файлов с шапкой. 2. Если там было 3680 значений - создано 10 файлов. 4 из которых с информацией как надо, а 6 - пустых.
т.е. несмотря на отсутствие значений он все равно берет в обработку все строки, в которые растянута формула. Ориентироваться а столбец А можно - он в первую очередь заполняется, но вот как подправить - что бы пустые файлы не создавались?scaels1
В листе "Тексты" формулы были растянуты на 10000 строк. 1. Если значений там вообще нет - создано 10 пустых файлов с шапкой. 2. Если там было 3680 значений - создано 10 файлов. 4 из которых с информацией как надо, а 6 - пустых.
В той версии макроса так и должно было быть - я же не вижу твоих реальных документов, поэтому ориентируюсь на вложенный тобою файл (именно для этого здесь и просят прилагать файлы). В предыдущем посте кинул доработанную версию, которая будет работать корректно, даже когда все ячейки таблицы заполнены формулами. Проверь и отпишись.
В листе "Тексты" формулы были растянуты на 10000 строк. 1. Если значений там вообще нет - создано 10 пустых файлов с шапкой. 2. Если там было 3680 значений - создано 10 файлов. 4 из которых с информацией как надо, а 6 - пустых.
В той версии макроса так и должно было быть - я же не вижу твоих реальных документов, поэтому ориентируюсь на вложенный тобою файл (именно для этого здесь и просят прилагать файлы). В предыдущем посте кинул доработанную версию, которая будет работать корректно, даже когда все ячейки таблицы заполнены формулами. Проверь и отпишись.KSV
Внес новую версию. При первичном запуске выдает ошибку Error 1004 - ругается, что ячейка защищена от изменений. После пары нажатий на кнопку "пропустить" - создает как в предыдущей версии "по максимуму" количество файлов без учета значений в ячейках. Вроде вылечил - снятием защиты с этого столбца и сокрытием его, да бы не сломали формулу случайно, но тогда искажаются и результативные файлы - в них тоже нет столбца А - "он скрыт"
Внес новую версию. При первичном запуске выдает ошибку Error 1004 - ругается, что ячейка защищена от изменений. После пары нажатий на кнопку "пропустить" - создает как в предыдущей версии "по максимуму" количество файлов без учета значений в ячейках. Вроде вылечил - снятием защиты с этого столбца и сокрытием его, да бы не сломали формулу случайно, но тогда искажаются и результативные файлы - в них тоже нет столбца А - "он скрыт"scaels1
В исходном файле нужно снять защиту только с одной ячейки в столбце A, которая находится в первой пустой строке, после формул (туда временно пишется формула, чтобы не перебирать все ячейки в цикле).
В исходном файле нужно снять защиту только с одной ячейки в столбце A, которая находится в первой пустой строке, после формул (туда временно пишется формула, чтобы не перебирать все ячейки в цикле).KSV
нужно снять защиту только с одной ячейки в столбце A, которая находится в первой пустой строке, после формул
Пробовал и с одной ячейки снимать, и с 30 после последней формулы, и где есть формула но с ячейки после значения, и первые 10 строк - где шапка. Не помогает Работает только если со всего столбца снимаю, или с листа. А иначе ругается. Решилась проблема, когда снял со всего столбца защиту и поставил только на те ячейки, где есть формулы, и шапка.
нужно снять защиту только с одной ячейки в столбце A, которая находится в первой пустой строке, после формул
Пробовал и с одной ячейки снимать, и с 30 после последней формулы, и где есть формула но с ячейки после значения, и первые 10 строк - где шапка. Не помогает Работает только если со всего столбца снимаю, или с листа. А иначе ругается. Решилась проблема, когда снял со всего столбца защиту и поставил только на те ячейки, где есть формулы, и шапка.scaels1
Чуть подправил (упростил), теперь работает корректно при защите всех ячеек листа (кроме одной, про которую я тебе писал). При запуске макроса он тебе подскажет адрес этой ячейки А после этого можешь закомментировать или вообще удалить вот эту строчку:[vba]
Код
MsgBox "Достаточно снять защиту только с этой ячейки: " & .Address ' перед вводом в эксплуатацию эту строку нужно закомментировать или удалить (чтоб не мешала)
[/vba]
Чуть подправил (упростил), теперь работает корректно при защите всех ячеек листа (кроме одной, про которую я тебе писал). При запуске макроса он тебе подскажет адрес этой ячейки А после этого можешь закомментировать или вообще удалить вот эту строчку:[vba]
Код
MsgBox "Достаточно снять защиту только с этой ячейки: " & .Address ' перед вводом в эксплуатацию эту строку нужно закомментировать или удалить (чтоб не мешала)