Все файлы CSV все в одном формате. Я хочу, чтобы каждый CSV-файл находился в отдельной таблице, а имя таблицы совпадает с именем файла.
Как я могу это сделать?
Все файлы CSV все в одном формате. Я хочу, чтобы каждый CSV-файл находился в отдельной таблице, а имя таблицы совпадает с именем файла.
Как я могу это сделать?
Я возвращаюсь сообществу, потратив четыре часа своего времени на выяснение конкретной проблемы, но в то же время отвечая на ваш вопрос. Весь другой код был собран из других ресурсов. Этот код будет использовать функцию Transfertext для извлечения нескольких CSV из каталога в их собственные отдельные таблицы с FILENAME в качестве имени таблицы. Запуск файлов с одинаковым именем файла позволит вам добавить к существующей таблице (удобно, если у вас есть 30 файлов с разными именами, но вы сохраняете одно и то же имя из месяца в месяц). Access 2010
Где у меня были проблемы: чертовы таблицы не будут добавляться при запуске файла с тем же именем. Он всегда создает новую таблицу и добавляет 1 2 3 и т.д. What_csv what_csv1 what_csv2. *** Вы должны удалить период из имени файла. Хотя access автоматически изменяет его на подчеркивание, когда он создает таблицу, он видит, что имя файла и таблица имеют разные имена. Это относится к любым символам, не разрешенным Access.
Обрезать последние четыре имени файла, чтобы удалить .csv, используя strTable = Left(strFile, Len(strFile) - 4)
***** Вот ответ на ваш вопрос *****
Option Compare Database
Option Explicit
Function DoImport()
Dim strPathFile As String
Dim strFile As String
Dim strPath As String
Dim strTable As String
Dim blnHasFieldNames As Boolean
' Change this next line to True if the first row in CSV worksheet
' has field names
blnHasFieldNames = True
' Replace C:\Documents\ with the real path to the folder that
' contains the CSV files
strPath = "C:\Documents\"
' Replace tablename with the real name of the table into which
' the data are to be imported
strFile = Dir(strPath & "*.csv")
Do While Len(strFile) > 0
strTable = Left(strFile, Len(strFile) - 4)
strPathFile = strPath & strFile
DoCmd.TransferText acImportDelim, , strTable, strPathFile, blnHasFieldNames
' Uncomment out the next code step if you want to delete the
' EXCEL file after it's been imported
' Kill strPathFile
strFile = Dir()
Loop
End Function
Если ваши CSV-файлы имеют одинаковый формат, обычно лучше хранить их в одной таблице. Например, у вас может быть 2 таблицы: одна с именами ваших файлов и одна с их содержимым.
Для импорта содержимого нескольких csv я обычно предпочитаю VBA. Есть 3 основных варианта:
Поскольку все ваши CSV-файлы имеют одинаковый формат, самый простой путь - первый.
Для использования DoCmd TransferText вам необходимо указать схему. Вы можете создать эту схему, импортируя вручную только один файл, и когда появится опция сохранения схемы, вы просто сохраните ее. Затем, используя функцию Dir() с расширением "* .csv", вы перебираете каталог и импортируете все свои файлы.
НТН