Пятница, 20.09.2024, 03:00
Приветствую Вас Гость

VBA - это просто!

Категории раздела
VBA [8]
Практические примеры VBA.
Статистика
Главная » 2013 » Июль » 24 » Импорт из Excel в Access
23:43
Импорт из Excel в Access

Рано или поздно любой программист VBA сталкивается с необходимостью перенести нужные данные из Excel в Access. Например, для их дальнейшей обработки. Причиной этому может стать то, что в Access редактирование данных идет значительно быстрее. Когда количество строк переваливает за 30000, это становится особенно заметным. Но разговор сейчас не о количестве строк, а о способе перенести данные из Excel в Access.

Поскольку в Access используются таблицы, в Excel мы должны структурировать данные и привести их к табличному виду. Для импорта данных можно, конечно, написать отдельный макрос. Но для себя я убедился, что быстрее и эффективнее будет использовать объект DoCmd. А если точнее, метод этого объекта, который называется TransferSpreadsheet. В этом случае импорт данных будет осуществляться при помощи одной единственной команды. Частично про подготовку к импорту упоминал вот здесь. Поэтому опишу только сам синтаксис команды для импорта.

Сама команда выглядит вот так:


DoCmd.TransferSpreadsheet TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range


Итак, все по порядку:

TransferType - это тип передачи. Для импорта в Access ставится acImport.

SpreadsheetType - в справке написано, что это тип таблицы. Обычно ставится acSpreadsheetTypeExcel9. Вместо 9 также может встретиться 7 или 12. Пока не встречал ситуаций, чтобы это кардинально влияло на процесс импорта.

TableName - это имя таблицы Access, в которую вы хотите перенести данные. Поскольку это строковое выражение, то пишется в кавычках. Например, "table_1".

FileName - это путь к файлу, из которого вы хотели бы импортировать данные. Лично я предпочитаю брать путь к файлу из диалогового окна, записывать этот путь в переменную и уже ее подставлять в команду импорта. Но можно и явно прописать путь к файлу. В этом случае не забываем про кавычки! Например, "D:\test.xls".

HasFieldNames - этот аргумент может принимать значения True или False. Если стоит True, то первая строка импортируемой таблицы будет использоваться в качестве имен полей (заголовки таблицы в Access). Если поставить False, первая строка будет восприниматься как данные, а не как заголовки. По умолчанию, этот аргумент равен False.

Range - это диапазон импортируемых ячеек. Например, "A1:G5". Если аргумент оставить пустым, то будет импортироваться вся таблица. Важное замечание - этот аргумент может быть использован ТОЛЬКО при импорте. Если он будет использован при экспорте, то функция просто вернет ошибку.

Вот, собственно, и все! В качестве заключения, хочу добавить еще одно замечание:

Плюс данного метода заключается ещё и в том, что если вдруг в Access не окажется таблицы с указанным в команде именем, то такая таблица будет автоматически создана.


Категория: VBA | Просмотров: 5828 | Добавил: mpak-mr | Рейтинг: 5.0/2
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Календарь
«  Июль 2013  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
293031
Архив записей