Страница: 1 |
Вопрос: Перебор файлов xls с переносом значений ячеек в ви | Добавлено: 28.04.10 06:29 |
Автор вопроса: ![]() |
Ребята помогите, пожалуйста, составить макрос в VBA (очень уж необходимо)!!!
Так чтобы данный макрос перебирал все файлы *.xls в папке "Detal" (P.S. начало название файлов в папке одинаково "Дет_*"), брал определённный ячейку А7 в определенном листе "Звонки", (лист и ячейка одинаковы во всех шаблонах) и переносил их в открытую книгу "Itog" (ну или как-то подругому), чтобы в итоге получился список: Название файла Значение ячейки A7 "Дет_1" 500 "Дет_2" 600 "Дет_3" 700 Заранее благодарю за помощь в решении проблемы. |
Ответы | Всего ответов: 3 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 23 Ответов: 417 |
Профиль | Цитата | #1 | Добавлено: 28.04.10 07:31 |
|
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ICQ: 308-534-060 Вопросов: 20 Ответов: 1860 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 01.05.10 00:12 |
Плюсы: книги не будут открываться во время работы, можно даже легко на вставку формул переделать.
Минус: нет обработки ошибок, впрочем и так понятно, что если вылезет ошибка обусловленная приложением, то это означает, что листа с именем "Звонки" в книге не оказалось. Как можно сделать ещё (подсказка). Когда получили путь к файлу и имя файла: а) проверили, нет ли файла с таким именем в открытых книгах, если есть, то получили экземпляр объекта Worksheet (рабочая книга) и булевую переменную установили в False (в начале программы задали как True), если книги нет в открытых, от открываем ее и получаем тот же экземпляр объекта Worksheet. Дальше проверяем есть ли в книге лист с именем "Звонки"? Если есть, то все хорошо - получаем объект рабочего листа, если нет - грязно ругаемся в Debug.Print или MsgBox и корректно завершаем работу макроса. Если объект листа все-таки получен, то получаем из него нужное значение и переходим к следующей книге. Но прежде чем выходить, проверяем булевую переменную. Для True (открывали сами в макросе) закрываем книгу, для False закрывать не надо, просто путь будет Nothing. Как-то так я бы написал, если ворошить надо слишком много файлов и ошибки возможны. Но получилось бы более громоздко, чем у Jasmin, так что пусть будет ее вариант. Если очень надо, могу потом скинуть мой шаблон вместе с кодом рекурсии Dir и диалогом выбора папки для обработки всех файлов в папке и подпапках, где можно задать шаблон имени фалов для обработки и на примере файлов Excel открывать их все по одному с обработкой ошибок, проверять наличие листа (мне было удобно использовать порядковый номер листа в книге) и делать что-нибудь. Такого рода наработка позволяла мне обрабатывать папки с сложенными многоуровневыми папками однородными по формату файлами Excel на автомате. Хорошо справлялся с папками порядка 1GB и порядка 4000 файлов Excel. Обработка ошибок была необходима, чтобы гарантировать, что всё обработалось как надо, ничего не пропущено и т.п. В отчетный документ также вставлялись возле цифр гиперссылки на книги и их содержащие папки. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 23 Ответов: 417 |
Профиль | Цитата | #3 | Добавлено: 01.05.10 11:50 |
Про обработку ошибок я знаю. Просто я не стала заморачиваться на обработку. Человек спрашивает, как перебрать все файлы в папке. А дальше, если нужно, вставит сам обработку. ![]() ![]() |
Страница: 1 |
|