Я пытаюсь настроить макрос с помощью VBA в MS Access 2016, чтобы импортировать несколько файлов .xls в мою таблицу.
Мне удалось запустить этот макрос для 13 файлов, но после 13-го файла каждый оставшийся файл выдает «Ошибка выполнения 3274: внешняя таблица не в ожидаемом формате».ошибка в строке DoCmd.TransferSpreadsheet:
Function ImportAllExcel()
Dim myfile
Dim mypath
Dim finpath
mypath = REDACTED
finpath = REDACTED
ChDir (mypath)
myfile = Dir(mypath)
Do While myfile <> ""
If myfile Like "*.xls" Then
DoCmd.TransferSpreadsheet acImport, 8, _
"Table Name", mypath & myfile, True
' Move imported files to Imported folder
FileCopy mypath & "/" & myfile, finpath & "/" & myfile
SetAttr mypath & "/" & myfile, vbNormal
Kill mypath & "/" & myfile
End If
myfile = Dir()
Loop
MsgBox "Import complete."
End Function
Я попытался несколько "исправить" из других сообщений безуспешно:
- Изменение SpreadsheetType на любое другое значение (включая пустое), числовые и все версии acSpreadsheetTypeExcel)
- Открытие файла и запуск макроса при открытии
- Открытие и повторное сохранение файла в формате .xls
- Открытие и сохранениефайл в формате .xls, используя другое имя
- Перед попыткой TransferSpreadsheet
установите для параметраAttr значение vbNormal * Ни одно из имен столбцов не содержит пробелов (хотя одно содержит подчеркивание и не импортирует столбец ввсе на тех, которые успешно запустились, но это отдельная проблема - я вручную добавил столбец в таблицу Access на всякий случай, но в ней нет записей).
Все файлы .xls взяты из одного источника, в одном формате, с одинаковыми именами столбцов и типами данных - это автоматический ежедневный отчет из машинного источника.Первые 13 файлов были импортированы просто отлично, и я не вижу заметной разницы между запущенными и оставшимися файлами.
Может кто-нибудь помочь мне понять, что происходит с этим макросом и как его исправить?
РЕДАКТИРОВАТЬ В ДОБАВИТЬ: Я добавил индекс в свою таблицу, чтобы предотвратить дублирование записей, что значительно сократило количество импортируемых записей, но все равно перестает работать с теми же файлами.Вручную запустить мастер импорта для одного из файлов, который макрос не будет обрабатывать, работает нормально, но у меня есть большое количество файлов для импорта, и я бы предпочел не импортировать их по одному вручную.