|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Ребята, начну с того что я только учусь и с этим никогда не сталкивался :-) У меня задачка такого рода: есть папка с файлами dbf. Каждый день она пополняется новой партией файлов из которых мне надо только 3 определённых файла. На работе делал так - Сортировал за возрастанием по дате, потом выберал нужные файли и открывал екселем, данные копировал в листы другой книги, где макрос делал выборку нужной информации и збивал в кучу. Так как этот процес нужно делать по пару раз в день, хотелось бы его автоматизировать (бывають промахи - человеческий фактор). Помогите пожалуйста, с кодом макроса. Необезательно что бы он был крутой - простенький. Дальше я бы уже разобрался... Папку с файлами прикрепил. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 00:24 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Используя ADODB.connection/recordset и ODBC -драйвер для dBase выборка делается легко. Хоть всего содержимого на лист/листы. Хоть только необходимых данных. Можно сделать и запрос с JOIN сразу из всех необходимых таблиц-источников и получить нужный результат. Далее уже автоматизировать процесс работы с самими файлами. Например, появились файлы на входе - отследили и обработали (или сверили список и кнопочку нажали), результат получили - файлы стерли/убрали в другое место. И ждем следующих... Напишите, что за выборки и своды вы делаете (или дайте пример вашего Excel-файла с выборками). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 05:13 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Так, а зачем? Там очень простой код. Я не силён в программировании и незнаю что такое ADODB.connection/recordset и ODBC -драйвер для dBase. Мне бы только простенький код для того что бы найти нужные файлы и с них перенести данные в листы ексель. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 10:49 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Как бы вам объяснить... Если вы попытаетесь "автоматизировать" свои _действия как человека_ (нашел, открыл, выделил, скопировал, переключил...) - это одно. Так можно сделать, но комп - не человек, и неспособен _оценивать_ всю сопутствующую информацию (если, конечно, он не AI со всеми аналогами человеческих чувств). И все равно, многие начинающие, вместо того, чтобы немного подумать или посоветоваться, как раз и начинают "автоматизировать" действия, которые выполняли бы сами. В результате программа манипулирует окнами, приложениями, эмуляцией нажатий кнопок, обменом через буфер, многократным пересохранением, вписыванием кучи формул для вычислений и т.д. Конечно, в результате обычно получается нужный результат, но написание и отладка такого кода выливается в сущий кошмар. Поскольку требует учитывать множество дополнительных факторов. А правильные действия - определиться с предметной областью. Определиться, что вы имеете и что желаете получить в результате. И какими программными средствами вы располагаете для решения. И начинать реализовывать действия заложенными в ПО возможностями. Я вам в предыдущем посте практически все, что нужно, расписал. И код при таком подходе будет не только "наипростейшим" но и почти минимальным. Вы пишете, что "только учитесь, не сильны в программировании" - так всё равно, раз взялись за автоматизацию некоего процесса - будьте добры учиться по данной теме. И не стОит учиться на ошибках (своих и чужих), если есть практически стандартизованные методы решения определенных задач. Вот я и говорю - "Дайте еще пример вашего готового Excel-файла с выборками (где заполнены листы, перенесенные из DBF, и есть формулы/своды (или чего там вы делаете потом)). И укажите, из каких файлов DBF взяты данные" . И мы попробуем вместе с вами разобраться, как нужно решать вашу задачу, причем быстро и "правильно". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 11:37 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
AndreTM , я Вас понял и спасибо что откликнулись. Даю код макроса, но это не конечный результат. Дальше я хочу обходиться вовсе без него. И два файла эксель которые я использую при вычеслении. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81.
У меня есть 2 файла эксель - Budgetu.xls и F412.xls. Сначала я открывал Budgetu.xls и с dbf файлов копировал данные в листы DerBud, MiscBud и OblBud. Сохранял и закрывал. Потом открывал F412.xls - запускал макрос RUN_412, который копировал данные в себе в книгу и выводил уже общую, нужную информацию в таблицы. Дальше в планах я хотел это сделать в одном файле и уже без макроса копирования, формулы ведь все работают нормально. Но сначала я хотел бы, чтоб не вручную копировать с dbf, а например, запустил макрос - появилось окно требующее ввести дату - после ввода он бы находил нужные файлы с нужной датой - переносил данные - ну а дальше ... результат, который я просто использую как мне надо. Какие именно 3 файла DBF мне надо было открывать: я сортировал по дате за возрастанием, потом, например, там 6 файлов за 10.05.2011, я открывал 4-ый сверху и копировал в лист DerBud, последний файл нужной даты я копировал в MiscBud и предпоследний в OblBud. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 12:36 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
В целом, я посмотрю, и постараюсь что-нибудь сваять, показывая вам. И интерфейс, и код. По частям, чтобы вы поняли подход. Впереди выходные - попробуем за это время управиться... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 14:14 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Большущее спасибо, что взялись... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 14:26 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
SemennuchКакие именно 3 файла DBF мне надо было открывать: я сортировал по дате за возрастанием, потом, например, там 6 файлов за 10.05.2011, я открывал 4-ый сверху и копировал в лист DerBud, последний файл нужной даты я копировал в MiscBud и предпоследний в OblBud.Напишите, пожалуйста, как будут называться файлы, например за 18-ое, 23-е и 30-е число. Достаточно имени одного файла на дату. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 16:35 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
скукотища, Скорее всего, они называются всегда одинаково, по части кода из какого-то классификатора. А расширение - порядковый номер выгрузки в данный день. Вообще, я для начала предложу просто список с мультиселектом, и, как и говорил, при подтверждении обработки - входные файлы в аут (можно и с переименованием). Просто на первом этапе _полностью автоматическая_ обработка ТСу будет слишком, ведь если дать сразу полностью готовый код - при любом изменении он нам потом мозг съест повторными вопросами (в полностью готовом модуле будет ли сначала разбираться?). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 16:53 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
AndreTM, ... И интерфейс, и код. По частям, чтобы вы поняли подход. ...Часть первая - отбор файлов по дате. :) Скорее всего, они называются всегда одинаково, по части кода из какого-то классификатораЗачем гадать? Когда есть первоисточник. Согласен, имя формируется по классификатору, содержит данные об 'откуда' и 'когда'. С 'откуда' - разобрался. С 'когда' - застрял. Маска файлов за десятое ноября Код: plaintext
первые ?? - классификатор 'откуда' 0 - _возможно_, год (0 - 2011, 1 будет 2012, 2 - 2013, и т.д.). хотя вряд ли B - шестнадцатеричное представление номера месяца A0 - шестнадцатеричное представление дня Вот с днём неопределённость, - то ли для однозначных чисел дополняется нулём справа, то ли записан задом наперёд. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 17:11 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Эти файлы скидуют нам из другой организации. Я чуток разобрался как они их называют. Значит так: Возьмём файли которые пришли 01.11.2011 года (со знаком восклицания - эмо мои искомые) FT000B10.001 FT000B10.002 FT010B10.001 FT010B10.002 !!!! (в лист DergBud) FT100B10.001 FT100B10.002 FT110B10.001 !!!! (в лист OblBud) FT110B10.002 !!!! (в лист MiscBud) Разберём - первые 5 символов (FT000) постоянные. Дальше идёт буква B - это месяц по порядку (Январь - 1, Февраль - 2, ..., Сентябрь - 9, Октябрь - А, Ноябрь - В , Декабрь - С. Следующая цыфра 1 - это число месяца от 1 до 9 и дальше A(10) - V(31). Дальше 0 - число постоянное. И в конце расширение .001 и .002 тоже постоянные. В результате меняются только 2 знака - месяц и число. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 17:30 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
А зачем разбираться? ТС до сих пор по поводу файлов держит неопределенность. У него "есть папка с файлами dbf. Каждый день она пополняется новой партией файлов"..."появилось окно требующее ввести дату - после ввода он бы находил нужные файлы с нужной датой ... Какие именно 3 файла DBF мне надо было открывать: я сортировал по дате за возрастанием, потом, например, там 6 файлов за 10.05.2011, я открывал 4-ый сверху и копировал в лист DerBud, последний файл нужной даты я копировал в MiscBud и предпоследний в OblBud" Оч-чень внятный алгоритм Так что предлагаю первоначально этот вопрос оставить на совести "тыкающего в пимпочку" - Выдаем список файлов за нужную дату (дату пока придется брать из ФС) и список таблиц-получателей, а "опэратор" тычками привязывает файл->таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 17:35 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
А, извиняюсь - пока писАл - уже ответ пришел. А больше всего меня добивает метОда - сначала "вышестоящие" разбивают единую таблицу, кодируя (без внятного документирования!) ключевые поля в имена файлов. Затем "на местах" из этих файлов собирают все обратно... скукотища , я бы проблему с файлами решил так - сливал бы все поступающие в единую таблицу с дополнительным полем - именем входного файла. Ну, еще поля можно добить - раскодировать это имя файла сразу... ИМХО, мы же затем собираемся данные доставать/собирать селектом? Следующий вывод - а зачем нам вообще Excel тогда - надо ТСа направить изучать VFP... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 17:48 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
AndreTM, Незнаю что такое ТС, но VFP - это я так понимаю Visual Fox Pro. В планах было заняться его обучением, но это явно не сейчас, я только начинаю осваивать эксель и боюсь будет каша. На работе и так SQL Navigator сбился с Visual Basic 6.0 в кучу. И то - и то толком и не понял. Кстати, до меня это всё делали с помощью VFP, но 2 года назад человек ушел с работы и коллеги больше года вытягивали вручную (после тренировки занимало около 20 минут). Меня же это всё замучало и я чуток автоматизировал до 5 минут (лень двигатель прогресса . Но и это же не предел. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 18:11 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Semennuch, ТС - это топикстартер... Да вы не бойтесь, сделаем мы вам и на Экзеле ваш этап... Я просто поразился тому, что у вас принцип странный: уже имея БД, данные сначала экспортируются и разбиваются _по файлам_, а затем снова собираются в _таблицы_, затем, опять же, в одну (к примеру) таблицу - и это является отчетом... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2011, 18:28 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
AndreTM, Дело в том, что там могут быть одинаковые индексы (счета в бюджете), но с разными сумами справа (так как в разных бюджетах разные начисления). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2011, 01:49 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Semennuch , вы сами поняли, что сказали? "Суммы справа" - сродни " тёплое и мягкое". "разные начисления" - а КАК вычислить _их_ по имени файла? или по содержимому таблицы? На самом деле , уже рисуется несколько вариантов реализации ваший "проблемы с ленью". Вот только не забывайте, что выбор _средства_ реализации стоИт выше, чем реализация алгоритма. А вы пытаетесь (в принципе, правильно) делать собственный свод. И проблема импорта данных "из некоего формата" здесь самое малое. Просим же - расскажите, в каком виде _вы_ имеете данные. Предположим, у вас имеются _только_ те самые файлы выгрузки. Расскажите, что вы должны получить в _итоге_ - только таблицу [F412].412? Расскажите, могут ли меняться форматы отчетности? И ВООБЩЕ, все исходные данные вы имеете в поступающих базах - зачем нужны разбивки по бюджетам в промежуточном файле? только из-за формы представления отчета? А если форма изменится? Извините за вопросы, но первую свою реализацию "свода с импортом/сведением/экспортом и печатью отчетных форм" я, например, реализовал еще в 96-м году. И с тех пор многое позабыл уже... А вы до сих пор не рассказываете полную постановку задачи... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2011, 02:28 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Мною сказанное, кажется (крещусь) мне вполне для меня понятным и я не вижу здесь другого алгоритма, как скопировал-вставил-свёл. Ну да ладно... Попробую ответить на вопросы. в каком виде _вы_ имеете данные - Предположим, у вас имеются _только_ те самые файлы выгрузки (именно) Расскажите, что вы должны получить в _итоге_ - только таблицу [F412].412? - таблицу F412 и в разрезе по кодам. Расскажите, могут ли меняться форматы отчетности? - могут. Если бы не менялись, то до сих пор бы пользовались VFP. И ВООБЩЕ, все исходные данные вы имеете в поступающих базах - зачем нужны разбивки по бюджетам в промежуточном файле? - это сделано для того, чтобы видеть суммы в разрезе кодировки. F412 - общие суммы, а по бюджетам видно какие именно суммы входят в платёжи. На счёт промежуточного файла, то я уже писАл, что позднее будет только один файл с вкладками: F412, DergBud, MiscBud, Oblbud. только из-за формы представления отчета? - думаю, что ответил выше. А если форма изменится? - обезательно изменится и уже (при мне) менялась. Часика два потратил на то, чтобы изменить свой свод. Неудобно, но в планах уже есть некоторые изменения, реализовав которые, мне понадобится минуток 5. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2011, 12:53 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
AndreTM, Ну как там идут дела? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2011, 20:42 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Файлы по размерам небольшие. Текстовой формат. Можно просто одной строкой загрузить в массив, обработать и вывалить на нужный лист в нужное место. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2011, 09:30 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
alex77755, Так я так и хочу. Мне бы только знать как загрузить файлы с dbf в Excel (тоесть как это прописать в макросе). Дальше бы уже придумал что и как делать. На каком-то форуме нарыл, что нужно какие-то драйвера, но сам ни бум-бум в этом, поэтому и прошу помощи здесь на форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2011, 22:44 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Вообще для открытия dbf из ексела не надо ничего. Нажимаешь запись макроса открываешь и смотришь код: Workbooks.Open Filename:= "D:-тут твой путь-.DBF" ексел открывает их свободно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2011, 02:01 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
Времени особого нет. Пока так: 1. Макрос запрашивает папку хранения файлов(если она постоянна - можно прописать жестко) 2. Выбирает фоайлы с расширением 001 в массив и сортирует по дате(дате создания файла, а не та что в имени - там нет времени, а "надо делать по пару раз в день). 3 первых файла в массиве будут искомыми для 001 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2011, 10:37 |
|
Открытие или перенос данных из dbf файла в Excel макросом
|
|||
---|---|---|---|
#18+
ОФФAndreTM, где же Вы? ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2011, 11:21 |
|
|
start [/forum/topic.php?fid=60&msg=37523682&tid=2158281]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 449ms |
0 / 0 |