Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сохранить данные листа в разные файлы - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Сохранить данные листа в разные файлы
scaels1 Дата: Воскресенье, 22.03.2015, 01:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Добрый день форумчане!
Есть потребность:
После определенной обработки в файле эксель имеется лист "Тексты" с результатами. Последним шагом надо все эти результаты с листа сохранить в отдельный файл для выгрузки на сервер.
С первой по десятую строчку включительно идет общая шапка (названия столбцов и т.п.)
С одиннадцатой строки и далее идут результаты. Их может быть всегда разное количество - и 500 и 10 000 строк.
Надо каким то образом написать макрос, который бы сохранял именно значения этого листа (т.к. там формулы) в новые отдельные файлы, но так, что шапка и не более 1000 строк значений идет в один файл.
Сложность определения заполненных ячеек для меня заключается в том, что в них формулы. Т.е. заполнено 10 000 строк формулами, но по их расчетам данных отражаться может только в первых 3000 строк, в остальных формулы показывают ничего.

Т.е. если у нас 4896 значений, то в результате будет сохранено 4 файла по 1000 значений и 1 на 896 значений. При этом шапка листа (она фиксировано с первой по 10 строку) везде одинаковая. Имена файлов могут быть вида Готовый1.xls Готовый2.xls Готовый3.xls и т.д. в зависимости от их количества. Формат файла "xls"
Файлы можно сохранять в одну папку например "Итог обработки" на рабочем столе, если ее нет - то создавать ее.

У меня получалось сделать только что бы все разом сохранялось в отдельный файл, а как сделать требуемую разбивку в зависимости от количества значений - не знаю уже. Под силу кому нибудь сделать простой макрос, который бы я повесил на кнопку?
К сообщению приложен файл: 2851319.xls (37.5 Kb)
 
Ответить
СообщениеДобрый день форумчане!
Есть потребность:
После определенной обработки в файле эксель имеется лист "Тексты" с результатами. Последним шагом надо все эти результаты с листа сохранить в отдельный файл для выгрузки на сервер.
С первой по десятую строчку включительно идет общая шапка (названия столбцов и т.п.)
С одиннадцатой строки и далее идут результаты. Их может быть всегда разное количество - и 500 и 10 000 строк.
Надо каким то образом написать макрос, который бы сохранял именно значения этого листа (т.к. там формулы) в новые отдельные файлы, но так, что шапка и не более 1000 строк значений идет в один файл.
Сложность определения заполненных ячеек для меня заключается в том, что в них формулы. Т.е. заполнено 10 000 строк формулами, но по их расчетам данных отражаться может только в первых 3000 строк, в остальных формулы показывают ничего.

Т.е. если у нас 4896 значений, то в результате будет сохранено 4 файла по 1000 значений и 1 на 896 значений. При этом шапка листа (она фиксировано с первой по 10 строку) везде одинаковая. Имена файлов могут быть вида Готовый1.xls Готовый2.xls Готовый3.xls и т.д. в зависимости от их количества. Формат файла "xls"
Файлы можно сохранять в одну папку например "Итог обработки" на рабочем столе, если ее нет - то создавать ее.

У меня получалось сделать только что бы все разом сохранялось в отдельный файл, а как сделать требуемую разбивку в зависимости от количества значений - не знаю уже. Под силу кому нибудь сделать простой макрос, который бы я повесил на кнопку?

Автор - scaels1
Дата добавления - 22.03.2015 в 01:54
KSV Дата: Воскресенье, 22.03.2015, 07:25 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Привет!
Макрос делает все в точности, как у тебя написано, т.е. полностью готовое решение. (с перехватом исключений)
Запускается по Ctrl+e (в английской раскладке)
К сообщению приложен файл: 2851319.7z (36.6 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеПривет!
Макрос делает все в точности, как у тебя написано, т.е. полностью готовое решение. (с перехватом исключений)
Запускается по Ctrl+e (в английской раскладке)

Автор - KSV
Дата добавления - 22.03.2015 в 07:25
scaels1 Дата: Воскресенье, 22.03.2015, 15:27 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Привет!
Макрос делает все в точности, как у тебя написано, т.е. полностью готовое решение. (с перехватом исключений)
Запускается по Ctrl+e (в английской раскладке)


Привет! Все круто! И как я понял - копируются именно строки и кол-во столбцов не важно. Спасибо! А что значит с перехватом исключений - это что имеется ввиду?

Не совсем понял - а как выделять только не пустые ячейки, где есть значения при расчете формул? Надо для выделения диапазона в других используемых макросах - что бы не выделять и не копировать весь возможный заданный диапазон, а только ту его часть, которая заполнена.
 
Ответить
Сообщение
Привет!
Макрос делает все в точности, как у тебя написано, т.е. полностью готовое решение. (с перехватом исключений)
Запускается по Ctrl+e (в английской раскладке)


Привет! Все круто! И как я понял - копируются именно строки и кол-во столбцов не важно. Спасибо! А что значит с перехватом исключений - это что имеется ввиду?

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

Автор - scaels1
Дата добавления - 22.03.2015 в 15:27
KSV Дата: Воскресенье, 22.03.2015, 18:18 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
А что значит с перехватом исключений - это что имеется ввиду?

Если, вдруг, когда-то возникнет ошибка (хотя, не должна), то пользователю будет выведен диалог с кнопками "Прервать", "Повторить" и "Пропустить".
Там же можешь дописать свой обработчик ошибок, если вдруг понадобится.

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

см строку кода:
[vba]
Код
lngRows = .Cells(.Rows.Count + 1, 1).End(xlUp).Row ' последняя заполненная строка
[/vba]
я специально для тебя комментарий написал... (суть этого кода, надеюсь, понятна без лишних объяснений)

[p.s.]вкратце - у тебя в столбце A не формулы, а значения, вот, по нему и определяется последняя заполненная строка :)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
А что значит с перехватом исключений - это что имеется ввиду?

Если, вдруг, когда-то возникнет ошибка (хотя, не должна), то пользователю будет выведен диалог с кнопками "Прервать", "Повторить" и "Пропустить".
Там же можешь дописать свой обработчик ошибок, если вдруг понадобится.

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

см строку кода:
[vba]
Код
lngRows = .Cells(.Rows.Count + 1, 1).End(xlUp).Row ' последняя заполненная строка
[/vba]
я специально для тебя комментарий написал... (суть этого кода, надеюсь, понятна без лишних объяснений)

[p.s.]вкратце - у тебя в столбце A не формулы, а значения, вот, по нему и определяется последняя заполненная строка :)

Автор - KSV
Дата добавления - 22.03.2015 в 18:18
scaels1 Дата: Воскресенье, 22.03.2015, 22:05 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
вкратце - у тебя в столбце A не формулы, а значения, вот, по нему и определяется последняя заполненная строка


Да, это в примере, где я 1 лист приложил из-за размеров файла, так и есть, а в исходном - т.е. рабочем - в этом столбце А тоже формула идет, которая ставит значением этот номер, если соответствующие данные на другом листе есть. А если данных на последующие ячейки нету - тогда так же ставит пустоту "" .
Этот нюанс как то влияет на работу макроса? (еще не успел его интегрировать, только вот собирался это делать садиться)
 
Ответить
Сообщение
вкратце - у тебя в столбце A не формулы, а значения, вот, по нему и определяется последняя заполненная строка


Да, это в примере, где я 1 лист приложил из-за размеров файла, так и есть, а в исходном - т.е. рабочем - в этом столбце А тоже формула идет, которая ставит значением этот номер, если соответствующие данные на другом листе есть. А если данных на последующие ячейки нету - тогда так же ставит пустоту "" .
Этот нюанс как то влияет на работу макроса? (еще не успел его интегрировать, только вот собирался это делать садиться)

Автор - scaels1
Дата добавления - 22.03.2015 в 22:05
scaels1 Дата: Воскресенье, 22.03.2015, 23:12 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Залил я макрос в рабочий файл.
Вот что получилось:
В листе "Тексты" формулы были растянуты на 10000 строк.
1. Если значений там вообще нет - создано 10 пустых файлов с шапкой.
2. Если там было 3680 значений - создано 10 файлов. 4 из которых с информацией как надо, а 6 - пустых.

т.е. несмотря на отсутствие значений он все равно берет в обработку все строки, в которые растянута формула.
Ориентироваться а столбец А можно - он в первую очередь заполняется, но вот как подправить - что бы пустые файлы не создавались?
 
Ответить
СообщениеЗалил я макрос в рабочий файл.
Вот что получилось:
В листе "Тексты" формулы были растянуты на 10000 строк.
1. Если значений там вообще нет - создано 10 пустых файлов с шапкой.
2. Если там было 3680 значений - создано 10 файлов. 4 из которых с информацией как надо, а 6 - пустых.

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

Автор - scaels1
Дата добавления - 22.03.2015 в 23:12
KSV Дата: Понедельник, 23.03.2015, 00:06 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Этот нюанс как то влияет на работу макроса?

конечно!
вот, доделал. (см. вложенный файл)
К сообщению приложен файл: 5370175.7z (68.1 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Этот нюанс как то влияет на работу макроса?

конечно!
вот, доделал. (см. вложенный файл)

Автор - KSV
Дата добавления - 23.03.2015 в 00:06
KSV Дата: Понедельник, 23.03.2015, 00:14 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
В листе "Тексты" формулы были растянуты на 10000 строк.
1. Если значений там вообще нет - создано 10 пустых файлов с шапкой.
2. Если там было 3680 значений - создано 10 файлов. 4 из которых с информацией как надо, а 6 - пустых.

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


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
В листе "Тексты" формулы были растянуты на 10000 строк.
1. Если значений там вообще нет - создано 10 пустых файлов с шапкой.
2. Если там было 3680 значений - создано 10 файлов. 4 из которых с информацией как надо, а 6 - пустых.

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

Автор - KSV
Дата добавления - 23.03.2015 в 00:14
scaels1 Дата: Понедельник, 23.03.2015, 10:03 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Внес новую версию.
При первичном запуске выдает ошибку Error 1004 - ругается, что ячейка защищена от изменений. После пары нажатий на кнопку "пропустить" - создает как в предыдущей версии "по максимуму" количество файлов без учета значений в ячейках.
Вроде вылечил - снятием защиты с этого столбца и сокрытием его, да бы не сломали формулу случайно, но тогда искажаются и результативные файлы - в них тоже нет столбца А - "он скрыт"
 
Ответить
СообщениеВнес новую версию.
При первичном запуске выдает ошибку Error 1004 - ругается, что ячейка защищена от изменений. После пары нажатий на кнопку "пропустить" - создает как в предыдущей версии "по максимуму" количество файлов без учета значений в ячейках.
Вроде вылечил - снятием защиты с этого столбца и сокрытием его, да бы не сломали формулу случайно, но тогда искажаются и результативные файлы - в них тоже нет столбца А - "он скрыт"

Автор - scaels1
Дата добавления - 23.03.2015 в 10:03
KSV Дата: Понедельник, 23.03.2015, 10:54 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
ругается, что ячейка защищена от изменений

В исходном файле нужно снять защиту только с одной ячейки в столбце A, которая находится в первой пустой строке, после формул (туда временно пишется формула, чтобы не перебирать все ячейки в цикле).


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
ругается, что ячейка защищена от изменений

В исходном файле нужно снять защиту только с одной ячейки в столбце A, которая находится в первой пустой строке, после формул (туда временно пишется формула, чтобы не перебирать все ячейки в цикле).

Автор - KSV
Дата добавления - 23.03.2015 в 10:54
scaels1 Дата: Вторник, 24.03.2015, 02:20 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
нужно снять защиту только с одной ячейки в столбце A, которая находится в первой пустой строке, после формул


Пробовал и с одной ячейки снимать, и с 30 после последней формулы, и где есть формула но с ячейки после значения, и первые 10 строк - где шапка. Не помогает
Работает только если со всего столбца снимаю, или с листа. А иначе ругается.
Решилась проблема, когда снял со всего столбца защиту и поставил только на те ячейки, где есть формулы, и шапка.
 
Ответить
Сообщение
нужно снять защиту только с одной ячейки в столбце A, которая находится в первой пустой строке, после формул


Пробовал и с одной ячейки снимать, и с 30 после последней формулы, и где есть формула но с ячейки после значения, и первые 10 строк - где шапка. Не помогает
Работает только если со всего столбца снимаю, или с листа. А иначе ругается.
Решилась проблема, когда снял со всего столбца защиту и поставил только на те ячейки, где есть формулы, и шапка.

Автор - scaels1
Дата добавления - 24.03.2015 в 02:20
KSV Дата: Вторник, 24.03.2015, 21:13 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Чуть подправил (упростил), теперь работает корректно при защите всех ячеек листа (кроме одной, про которую я тебе писал).
При запуске макроса он тебе подскажет адрес этой ячейки :)
А после этого можешь закомментировать или вообще удалить вот эту строчку:[vba]
Код
MsgBox "Достаточно снять защиту только с этой ячейки: " & .Address ' перед вводом в эксплуатацию эту строку нужно закомментировать или удалить (чтоб не мешала)
[/vba]
К сообщению приложен файл: 5489594.7z (73.7 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеЧуть подправил (упростил), теперь работает корректно при защите всех ячеек листа (кроме одной, про которую я тебе писал).
При запуске макроса он тебе подскажет адрес этой ячейки :)
А после этого можешь закомментировать или вообще удалить вот эту строчку:[vba]
Код
MsgBox "Достаточно снять защиту только с этой ячейки: " & .Address ' перед вводом в эксплуатацию эту строку нужно закомментировать или удалить (чтоб не мешала)
[/vba]

Автор - KSV
Дата добавления - 24.03.2015 в 21:13
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!