Страницы: 1
RSS
Создание файлов согласно списка при помощи макроса
 
Помогите решить одну из задач.  
Есть книга Excel с листом "Адреса", на котором есть кнопка "Добавить адреса"  
В А1 название месяца, например "Июль"  
В А2 первый адрес дома "Авиационная ул.Зел-к д.10"  
В А3 второй адрес другого дома и т.д. до 200 -го адреса.  
Надо в папке\Адреса создать 200 новых файлов с именем соответствующего адреса  
с одним листом "Июль"  
В следующем месяце в А1 будет "Август"  
Количество адресов увеличится до 250.  
Необходимо проанализировать файлы в папке \Адреса :  
если файл с соответсвующим названием адреса есть, то в него надо  
добавить лист "Август",  
если файла нет, то надо создать новый файл с именем соответствующего адреса  
с одним листом "Август"  
И т.д. с каждым новым месяцем количество адресов добавляется, соответсвенно должно увеличиваться  и количество файлов в папке \Адреса    
Помогите написать макрос, заранее благодарен за помощь.
 
См. файл
 
Pavel55, Огромное спасибо за помощь и быстрый отклик.  
Я уже обращался на форум 21 декабря в теме "поиск адресов домов в объединенных ячейках при помощи VBA", но до сих пор никто не ответил.    
Ваш код (это только часть поставленной задачи )весь разобрал, но есть вопросы:  
1. В команде Replace, что означает слово "дробь";  
2.Вызов подпрограммы ApplicationTurning это обязательный аттрибут  
каждой программы ? Надпись "Идет выгрузка" возможно можно поместить на кнопку "Выгрузить адреса" на время выполнения программы.    
3.Функция SheetExist возвращает значение True, если файл существует?  
4.Пока не очень понимаю обработчик ошибок, когда эти ошибки возникают и по какой причине. Или выводимое сообщение подскажет мне код ошибки и затем мне надо искать источник этой ошибки.  
В теме от 21 декабря у меня приведены отчеты за каждый месяц, из которых мне нужно по каждому адресу перенести данные в созданные файлы в папке \Адреса в лист с месяцем, за который сформирован отчет.    
Буду благодарен за любую помощь по этим темам. Еще раз спасибо.
 
1) Replace, т.е. замена использую для того, чтобы удалить значок \ в адресе, т.к. в ячейке может быть адрес  
 
Улица Дмитровская д. 35\5    
 
т.е. с дробью, но имя файла не может содержать значок дроби, поэтому я заменяю \ на слово " дробь "  
 
На самом деле есть много символов, которые не разрешено использовать в названии файла  
 
2) ApplicationTurning - это подпрограмма, которая сперва отключает некоторые свойства Excel, которые способствую убыстрению работы макроса, а в конце она всё включает обратно. Например, отключает обновление экрана и автоматический пересчёт, а потом всё включает обратно.  
 
3) SheetExist - проверяет существует ли определённый лист в файле или нет  
 
4) Обработчик ошибок выполнен на всякий случай - если произойдёт ошибка, сперва включатся функции, которые мы отключили, потом выскочит сообщение с номером ошибки и её описанием.  
 
По поводу вашей другой темы - посмотрю, если что-то придумаю - отпишусь
 
На практике адресов с использованием обратного слеша "\" нет, есть только "/",  
например МАЛАЯ КАНОНЕРСКАЯ УЛ. д.40/2  
Можно ли каждый новый лист в адресном файле помещать в конец, чтобы листы располагались в порядке возрастания месяцев?  
У меня определенную трудность вызывает ситуация, когда надо информацию из файла отчета по 300 адресам за определенный месяц перенести в кучу файлов в директории \Адреса. Т.е должен быть открыт файл отчета, найден первый адрес, последующие данные перенесены в соответствующий адресный файл на лист с именем месяца, в котором был создан отчет, затем найден второй адрес и т.д. а код прописан в третьей книге ( This Workbook ).  
Большое спасибо за содействие, с уважением Kuzmich
 
Вот изменённый файл, тут изменены:  
- \ на /  
- следующий месяц будет вставляться в конец списка листов  
 
по поводу остального - мне надо осмыслить, что вы имеете ввиду
 
{quote}{login=Kuzmich}{date=25.12.2008 11:56}{thema=Re}{post}  
У меня определенную трудность вызывает ситуация, когда надо информацию из файла отчета по 300 адресам за определенный месяц перенести в кучу файлов в директории \Адреса. Т.е должен быть открыт файл отчета, найден первый адрес, последующие данные перенесены в соответствующий адресный файл на лист с именем месяца, в котором был создан отчет, затем найден второй адрес и т.д. а код прописан в третьей книге ( This Workbook ).{/post}{/quote}  
 
Если честно, я из этого ничего не понял (
 
{quote}{login=Pavel55}{date=26.12.2008 12:38}{thema=Re: Re}{post}  
 
Если честно, я из этого ничего не понял ({/post}{/quote}  
 
на сколько я понял :  
1 книга - это книга отчет со всеми данными;  
2 книга - это пустая созданая книга отдельного дома;  
3 книга - сам макрос.
 
эм... как бы да  
в программе Excel книгой называется файл, который создан программой Excel, обычно с расширением *.xls для офиса 2003 и ниже или *.xlsx (*.xlsm) для офиса 2007. Например, Книга1.xls. В книге имеются листы (Лист1, Лист2, Лист3 и т.д.). Книга - это хранилище табличной информации. Но с точки зрения операционной системы Windows любая Книга - это обычный файл.  
 
Просто все файлы Excel принято называть книгами  
А все файлы Word принято называть документами.  
 
Так что ваши высказывания  
 
1. книга - это книга отчет со всеми данными;  
2. книга - это пустая созданная книга отдельного дома;  
 
это верно, а вот  
 
3. книга - сам макрос  
 
это не совсем верно. Т.к. макрос - это просто какой-то текст, написанный на языке Visual Basic for Application и хранимый внутри книги Excel. Т.е. книга - это не макрос, но книга может содержать внутри себя макрос. Вы же не говорите, что книга Excel - это слово. Но внутри книги Excel можно написать любое слово или предложение.  
 
Вот как-то так. Надеюсь понятно объяснил, если что коллеги меня поправят
 
Pavel55, Вы все правильно поняли.  
Книга отчета в Excel за месяц по 300 адресам занимает до 3 Мб (их будет две: по гос.фонду (Гос) и по управляющей компании (УК)). К концу года получится 24 книги отчетов и их анализ занимает очень много времени.  
Поэтому было принято решение о создании кучи маленьких файлов по каждому адресу с переносом в них данных каждый месяц из книг отчетов по мере поступления этих отчетов.  
В третьей книге ( она как бы координирующая), где будет написан макрос, я буду делать по нажатии определенных кнопочек:  
1.Выборку адресов из книги отчетов за очередной месяц;    
2.Перенос данных (платежи населения по различного рода услугам, количество которых тоже может меняться от месяца к месяцу) по каждому адресу из отчетов   ( по Гос и УК) в адресные файлы в папке \Адреса в лист соответствующего месяца;  
3.Анализ данных по выбранному из списка  адресу, суммирование услуг по Гос и УК, выделение из данных коммунальной и жилищной доли и т.д.. Но теперь уже все данные по конкретному адресу будут находиться в небольшом по объему адресном файле.  
Большое спасибо за Вашу отзывчивость и терпение. Читал Вашу переписку с Натальей по вопросу создания пустых директорий. Мы еще только учимся, не судите нас строго. С уважением, Kuzmich
 
Мои мысли:  
 
1) Адресов может быть много, т.е. у вас накапливается целая база данных по адресам. Excel не самая лучшая программа для хранения Базы Данных, поэтому мне кажется вам лучше перейти на Access.  
 
2) По-моему мнению лучше хранить 24 книги, чем 100000 маленьких с одним адресом и при том разное написание адреса может привести к задвоению файлов.  
Поэтому проще написать макрос, который будет в конце года обрабатывать эти 24 файла  
 
3) По поводу переписки с Наталией - я не сужу строго, просто я очень часто недопонимаю, чего хочет девушка, когда задаёт вопрос. Я всё равно буду им помогать по мере своих возможностей (если буду понимать их вопросы). Просто мне удобнее писать макросы, когда есть точное техническое задание.    
 
Например,    
 
"необходимо открыть Книга1.xls взять информацию из столбцов А:С на листе "Отчёт" и скопировать информацию в новую Книгу и сохранить под другим именем.  
 
А не вот такое:    
 
"Людиии, срочно!!! мне нужна какая-то программаааа, иначе меня сегодня уволят!!!! Ну, помогите же мне скорееееее, почему вы все такие чёрствыеее!!! Образцы файлов я вам не могу выложить - они очень секретные. Что с ними нужно сделать - я тоже не могу сказать, но программа мне нужна срочно и сегодня! Надеюсь я понятна вам всем объяснилааааа?????"  
 
Просто многие пользователи думают, что мы находимся с ними рядом, в одной комнате и знаем их задачу и видим их файлы и структуру таблицы и приходится день-два убеждать человека, что ты в другом городе, ты занимаешься вообще другими делами, далёкими от бухгалтерии, а также не знает, как в их компании установлен документооборот и какой отчёт нужен их начальству. И потратив день-два на обосновании всех этих нюансов и нервов, мы получаем неких файл, пишем макрос - и все довольны.
 
Файлы отчетов создаются в вычислительном центре и я думаю там не может быть дублирования адресов. Адреса по УК и Гос одни и те же за определенный месяц.  
Но я уже писал, что эти файлы очень большие ( открытие одного файла в Excel занимает около 3-х минут ), а мне нужно будет вытащить информацию по конкретному адресу из 24 таких книг в конце года, так сколько же времени потребуется на анализ только одного адреса. Или я чего-то не так понимаю?    
Если вы предложите другой алгоритм обработки, буду только рад.  
Трудность еще вызывают объединенные ячейки в файле отчета, так скажем адрес занимает 6 ячеек Ai,Bi,Ci,Di,Ei,Fi , которые объединены в одну ячейку Ai.  
Как вытащить все адреса из отчета посредством кода?  
К сожалению, работать в программе Access мне не приходилось, времени на    
изучение уйдет немало, а анализ оплат услуг от населения по каждому адресу нужен уже с Нового года.  
С уважением, Kuzmich.
 
Я написал вам макрос по выгрузке адресов из отчётов. Сейчас выложу файл в той теме
Страницы: 1
Наверх