В настоящее время я создаю короткий сценарий VBA, который берет таблицу из базы данных доступа и экспортирует ее в Excel с помощью метода «TransferSpreadSheet». Тем не менее, всякий раз, когда я делаю это я получаю «Run Time Error 3011», который гласит, что «ядро базы данных Microsoft Access не удалось найти объект„MonthsOutput“Microsoft Access не может найти объект таблицы
Ниже соответствующие форматы и кодовые секции:.
Public Sub Run()
OutputFileName = CurrentProject.Path & "\Test5.xls"
TableName = "MonthsOutput"
Call SetExcel(OutputFileName, 1)
Call ExportToExcel(OutputFileName, TableName)
Call MoveData
End Sub
Public Function SetExcel(OutputFileName As String, SheetNumber As Integer)
Set XL = CreateObject("Excel.Application")
Set XLBook = GetObject(OutputFileName)
Set XLSheet = XLBook.Worksheets(SheetNumber)
Set XLSheet2 = XLBook.Worksheets(3)
End Function
Public Function ExportToExcel(OutputFileName As String, TableName As String)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, TableName, OutputFileName
End Function
Я смог решить эту ошибку из-за перезагрузки Access или создания другого файла Excel или создания другой таблицы доступа к источнику данных. Это будет работать в течение 1-2 сеансов, а затем я получу ошибку, не меняя ничего.
Кроме того, если я вхожу в таблицу «MonthsOutput» в режиме «Дизайн», VBA вернет ошибку, объект используется другим пользователем. Таким образом, это заставляет меня думать, что он знает, что таблица существует, она просто не может ее использовать.
Все хранится локально на моем компьютере, а файл Excel и база данных Access находятся в одних и тех же папках. Я запускаю Access 2013 и Excel 2013, но я использую расширения «.xls» для аргумента «acSpreadsheetTypeExcel12». Любая помощь будет оценена по достоинству.
Благодаря
Спасибо за ответ! Оказывается, что, удалив ссылку на объект Excel, я уверен, что Excel не будет открыт. По какой-то причине, всякий раз, когда файл Excel открыт и выполняется попытка переноса данных, он возвращает ошибку 3011. Нечетный, но эх. Спасибо! –
Спасибо за отзыв. Пожалуйста, отметьте как ответ, чтобы закрыть вопрос. – Gustav