Данные, данные, данные — без этого база данных была бы бесполезна. Так что неудивительно, что один из мost Часто задаваемые вопросы, когда дело доходит до внесения этих данных в ваши таблицы Access: как я могу облегчить свою жизнь, когда мне приходится регулярно импортировать много (и много!) файлов? Поскольку это довольно распространенная задача, очевидно, что есть несколько способов содрать шкуру с этой конкретной кошки, но здесь мы рассмотрим только один — на мой взгляд, самый простой — особенно если вы делаете это регулярно или даже запланированный срок. Немного планирования (и я имею в виду немного!) и немного магии VBA, и все готово — читайте дальше, чтобы получитьtarТед…
Импорт всех файлов Excel в папку
В этой статье мы рассмотрим импорт нескольких файлов Excel в заданную папку, но вы также можете легко импортировать CSV-файлы и т. д. Вскоре мы обсудим, как изменить код для обработки CSV-файлов.
Во-первых, давайте определим, что мы хотим, чтобы код делал:
«Мы хотим импортировать все файлы из данной папки в существующую таблицу — мы также хотим указать, есть ли у файлов строка заголовка или нет»
Кажется достаточно простым, так что давайте посмотрим на код, чтобы сделать это:
Sub ImportfromPath(path As String, intoTable As String, hasHeader As Boolean) Dim fileName As String 'Прокручивать папку и импортировать каждый файл fileName = Dir(path & "\*.xls") While fileName <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader 'проверить, есть ли еще файлы для импорта fileName = Dir() Wend End Sub
Проверка на наличие проблем…
Прежде чем мы углубимся в детали того, как работает этот код, важно отметить, что в приведенном выше коде нет проверки ошибок — это сделано намеренно, чтобы код оставался легко читаемым, но я настоятельно рекомендую вам добавить код обработки ошибок. в вашу базу данных, чтобы вы сохранили шансы Повреждение базы данных доступа по минимуму!
ОК – обо всем по порядку. Чтобы сделать код как можно более пригодным для использования в различных обстоятельствах, мы запрашиваем имя пути (где хранятся файлы), имя таблицы, в которую вы хотите импортировать эти файлы, и все ли файлы в этой папке имеют заголовка или нет (т. е. появляются ли имена полей в первой строке электронной таблицы).
Вы заметите, что часть кода, которая ищет файлы — Dir(path & «\*.xls») — добавляет подстановочный знак и расширение файла к указанному пути. Я упоминаю об этом, так как было бы очень легко изменить код, если, например, вы хотите импортировать только те файлы, которые соответствуют определенному соглашению об именах (например, все файлы, в имени которых есть «Январь» или «2017»). ). Вы могли бы, если хотите, даже добавить этот фильтр в качестве параметра вызова подпрограммы.
В любом случае, если файл соответствует заданным критериям (любой файл «.xls» в папке, использующий в данном случае), он немедленно попытается импортировать этот файл с помощью команды TransferSpreadsheet.
Где изменить код в соответствии с вашими потребностями…
Именно в этот момент вы можете изменить код, чтобы вместо импорта электронной таблицы он импортировал файлы csv (используя команду «TransferText») и т. д.
Затем код зацикливается до тех пор, пока в этой папке не останется файлов для импорта.
Это небольшой фрагмент кода, но я уверен, что вы будете использовать его снова и снова!
Об авторе:
Митчелл Понд — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая исправить повреждение SQL и программные продукты для восстановления Excel. Для получения дополнительной информации посетите www.datanumen.com
Привет, мне кажется, я увидел, что вы посетили мой блог, и пришел, чтобы «отплатить тем же». Я пытаюсь найти способы улучшить свой сайт! Полагаю, можно использовать несколько ваших идей!