|
|
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
Доброго Всем времени суток, уважаемые программисты Начну с предисловия. Так уж случилось, но я не программист, я проектировщик ИС (я хорошо умею проектировать информационные системы, но, к сожалению, очень плохо кодирую) Вот наступила пора практики, и в организации мне дали задание, поработать с VBA и сделать отчет (как уже говорил, мудрёный). У меня, конечно, был студенческий опыт работы с VBA в Excel в универе на первых курсах, но те задания в подметки не годятся тому что я получил сейчас. Хочу чтобы знающие люди помогли кое в чем, направили в нужное русло, так сказать. Итак, задание. Существует некоторая автоматизированная система, способная выдавать пользователю отчеты на один день (ссудные счета и остатки по ним в нескольких определенных филиалах). Выгрузка отчетов производиться раз в месяц и сохраняется в определенной директории. От меня требуется написать макрос, способный формировать отчеты на определенный период, и в разрезе филиалов. Как я понял, сперва необходимо просканировать директорию, выбрать файлы с нужной датой и работать с массивом данных. Начал реализацию. Создал надстройку, при вызове которой будет появляться форма следующего вида: Нужно будет выбрать период (использовал Microsoft Date and Time Picker Control 6.0). Тут появляется сразу вопрос как написать процедуру задающую начало и конец периода из датапикера? Дату файлов нужно вынимать из исходных отчетов как откинуть лишний текст и взять лишь дату? Третий вопрос как отобрать файлы с нужной датой, попадающей в заданный нами период? Вот, это пока самые интересующие меня вопросы. Заранее благодарен всем участвующим в обсуждении! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2010, 12:27 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRx, Какого вида имена файлов в папке? В любом случае, в работе со списком файлов тебе поможет либо функция dir(), либо http://wm-help.net/books/book/32.html FileSystemObject. Насчет получения значений из формы - посмотри в конструкторе форм имена элементов на своей форме (выбираешь элемент, нажимаешь F4), потом в коде используешь что то типа имя_формы.имя_элемента.value или text. Ну и под конец добавь в код цикл перебора файлов из директории на форме. Можно использовать что то похожее на Код: plaintext 1. 2. 3. 4. 5. Также file и folder надо заменить на переменные FSO (в книге из ссылки все понятно расписано). В общем, задавай более конкретные вопросы, гугли, разберешься за пару дней) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 00:28 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
gatogordoКакого вида имена файлов в папке? gatogordo, Имена файлов задает пользователь, но на них не стоит рассчитывать. Дату стоит брать из ячейки, отчеты же выгружаются раз в месяц, не думаю, что пользователь корректно все сделает. Да насчет использования FSO вы правы, сегодня буду пробовать. Насчет значений из ячейки тоже попробую сегодня. gatogordoВ общем, задавай более конкретные вопросы, гугли, разберешься за пару дней) хорошо, спасибо! Буду стараться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 05:00 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRx, после обработки файлов и т.д, копайте в сторону сводных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 10:03 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRx, Если я Вас верно понял в папке лежит куча файлов сформированных в конкретный месяц и в конкретный день. Нужно периодически обрабатывать часть из них? Первый вопрос - почему не Access? 1. Засосали туда ВСЕ файлы, при помощи VBA 2. подключились к access сводной таблицей на основе sql-запроса 3. программно меняйте текст sql запроса (а если данных менее 1млн строк засосите все данные в excel) 4. формируйте пожалуйста любой детализации отчет Я думаю, что так кошернее (и быстрее) чем открывать все файлы, вылавливать в cells нужный текст, потом этом тексте распознавать на дату и выбирать оттуда данные (тем более если я верно понял файл Вы не фильтруете) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 16:02 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
Shamanus, только сегодня в руки попал отчет с количеством строк равным 60987. и это только за один день.. Видимо, прислушаюсь к Вашему совету. Значит нужно содержимое xls переместить в БД Access и потом работать с файлом через MSQUERY, так? Задание облегчилось тем что возможна обработка файлов поштучно, не обязательно с директорией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 20:47 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRxтолько сегодня в руки попал отчет с количеством строк равным 60987. и это только за один день.. Если ежедневно будет попадать в БД такой объем информации, то акса, с его ограничением на 2 гига, ненадолго хватит. Лучше уж сразу примеривайтесь к полноценному серверу БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2010, 06:32 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
mds_world, согласен с Вами. Если данные нужно хранить хотябы полугодичные Access не справится Автор, а за какой интервал может быть отчет, максимум? [quot KiRx Значит нужно содержимое xls переместить в БД Access [/quot] все верно, можно соответствующую обработку написать на VBA, она будет открывать первый по списку файл, проверять содержимое ячейки, определять куда положить данные и засасывать данные в таблицу. На деле не все так страшно как звучит. Буквально 50 строк кода. [quot KiRx и потом работать с файлом через MSQUERY, так?[/quot] Ну тут вопрос собственно подхода. Я бы делал это не через query, а автоматизировал бы процесс на основе VBA. Т.е. элементарная форма интервала отчета и содержимого. А на эту форму повесил бы процесс изменения запроса и обновления данных. Типа Вашей формы в нулевом посте, только без директории, но с типом отчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2010, 08:38 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
решил подойти по-другому. руками записал макрос на сортировку и промежуточные итоги. Сортировка по значению по столбцу с номером филиала Промежуточные итоги – при каждом изменении в столбце Номер филиала суммировать значения столбца Остатки – при каждом изменении в столбце Номер филиала подсчитывать количество значений в столбце Номер ссудных счетов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2010, 10:42 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2010, 12:22 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
Только вместо Selection Код: plaintext 1. 2. 3. нужно указать конкретный диапазон. Или предварительно активировать лист (WS). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2010, 12:35 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
vlth, спасибо! с перебором страниц получилось а вот насчет промежуточных итогов. я их использовал для того, чтобы получить сумму по одному столбцу и количество по другому, когда в отсортированном столбце меняется значение. Как думаете, это рационально? Просто потом мне промежуточные итоги нужно выцепить и сохранить в другой книге. а значения ячеек с промежуточными итогами это формулы типа Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2010, 15:04 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRx, здесь я "пас": с промежуточными никогда не работал, а разбираться ради одного только интереса не хочется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2010, 19:50 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRxvlth, спасибо! с перебором страниц получилось а вот насчет промежуточных итогов. я их использовал для того, чтобы получить сумму по одному столбцу и количество по другому, когда в отсортированном столбце меняется значение. Как думаете, это рационально? Просто потом мне промежуточные итоги нужно выцепить и сохранить в другой книге. а значения ячеек с промежуточными итогами это формулы типа Код: plaintext И что не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2010, 21:24 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
big-dukeKiRxvlth, спасибо! с перебором страниц получилось а вот насчет промежуточных итогов. я их использовал для того, чтобы получить сумму по одному столбцу и количество по другому, когда в отсортированном столбце меняется значение. Как думаете, это рационально? Просто потом мне промежуточные итоги нужно выцепить и сохранить в другой книге. а значения ячеек с промежуточными итогами это формулы типа Код: plaintext И что не так ? а проблем не будет с копированием из ячеек с формулами? вот что имею: может стоит пробегать по столбцам и суммировать нудные столбцы? без промежуточных итогов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2010, 22:28 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRx, так вы копируйте не формулу, а значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2010, 10:45 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
а может кто-нибудь подсказать примерный код макроса, который пробегает по строчкам, находит нужный текст (в моем случае "Количество" и "Итог") и копирует значения из нужных ячеек этой строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2010, 10:54 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRx, конечно можем. А вы не хотите сами попробовать ? Тем более что вы разбили ее на шаги : 1. Обойти диапазон 2. Найти значения 3. Скопировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2010, 11:03 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
vlthТолько вместо Selection+ Код: plaintext 1. 2. 3. нужно указать конкретный диапазон. Или предварительно активировать лист (WS). Вот, работать хочет только для одного листа... почему? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. и еще вопрос если у меня последний лист может кончаться не O60994 а O8876, как это учесть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2010, 08:19 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRxВот, работать хочет только для одного листа... почему? ... и еще вопрос если у меня последний лист может кончаться не O60994 а O8876, как это учесть? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Будет работать, если ниже ячейки O60994 (или O8876) нет данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2010, 10:49 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
подскажите, пожалуйста Код: plaintext Код: plaintext как от них избавиться? убираю в коде они снова появляются.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 22:44 |
|
||
|
[VBA Excel] отчет на основании большого количества файлов
|
|||
|---|---|---|---|
|
#18+
KiRx, убрать в коде, где задаётся d. Что ещё можно посоветовать, не видя кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 22:58 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36696656&tid=2177940]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 543ms |

| 0 / 0 |
