Я пытаюсь экспортировать все свои таблицы из базы данных доступа в отдельные CSV-файлы. У меня есть цикл, который проходит через все таблицы и с помощью TransferText я хочу создать .csv-файл для каждой таблицы.
Я могу создать отдельный файл, написав метод TransferText.
DoCmd.TransferText acExportDelim, "ExportCsv", [Table name], filePath + "Test.csv", True
Но когда я пытаюсь создать цикл для создания файла для каждой таблицы, у меня возникают проблемы,(Filepath установлен на рабочий стол)
' Loops through all tables and extracts them as .csv-files
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
' ignore system and temporary tables
If Not (tdf.Name Like "MSys*" Or tdf.Name Like "~*") Then
' Export table as CSV
'MsgBox (tdf.Name)
fileName = tdf.Name & ".csv"
DoCmd.TransferText acExportDelim, "ExportCsv", tdf.Name, filePath + fileName, True
End If
Next
Set tdf = Nothing
Set db = Nothing
При таком выполнении появляется ошибка «3011», говорящая о том, что не удается найти объект. Затем он дает мне имя объекта: [имя таблицы] #csv. Поэтому по какой-то причине он меняет «.csv» на «#csv».
Если я удаляю расширение файла из имени файла, все, что я получаю, это Ошибка 3027, говорящая, что объект или база данных доступны только для чтения.
Кто-нибудь знает, есть ли решение моей проблемы или другой способ сделать то же самое? Или мне придется пойти совсем другим путем?
РЕДАКТИРОВАТЬ:
Другие проверенные варианты
DoCmd.TransferText acExportDelim, "ExportCsv", tdf.Name, "C:/tempFile.csv", True
DoCmd.TransferText acExportDelim, "ExportCsv", tdf.Name, "C:/" & tdf.Name & ".csv", True
: выдает ошибку "#csv".
DoCmd.TransferText acExportDelim, "ExportCsv", tdf.Name, "C:/tempFile", True
DoCmd.TransferText acExportDelim, "ExportCsv", tdf.Name, "C:/" & tdf.Name, True
: выдает ошибку только для чтения