Пересмотренный код экспорта создает (или пытается) запрос в удаленной базе данных. Поскольку удаленной базой данных является MySQL, я ожидаю, что попытка создать запрос с помощью QueryDefs не удалась. Даже если запрос был создан, OutputTo ищет запрос в локальной базе данных и не находит его.
Рассмотрим этот пример извлечения из другой базы данных Access, которая успешно экспортирует:
Dim qdf As DAO.QueryDef
DoCmd.DeleteObject acQuery, "qryTemp"
Set qdf = CurrentDb.CreateQueryDef("qryTemp", "SELECT * FROM sometable IN '\\servername\path\DBname.accdb'")
DoCmd.OutputTo acOutputQuery, "qryTemp", acFormatXLS, , True
Когда процедура завершится, во внешнем интерфейсе будет сохранен объект запроса (хотя он не будет сразу отображаться в области навигации). Поскольку объект создан, можно просто создать таблицу и экспортировать таблицу. К сожалению, я не вижу, как ссылаться на базу данных MySQL в QueryDefs или на действие SELECT INTO, чтобы объект создавался во внешнем интерфейсе. Возможно, может пройти через набор записей и записать данные в таблицу по одной записи за раз.
Единственная альтернатива, которую я вижу, - это использование автоматизации Excel. Откройте объект Excel и экспортируйте его в диапазон листа с помощью метода CopyFromRecordset.
Dim db As DAO.Database, rs As DAO.Recordset
Dim xl As Excel.Application, wb As Excel.Workbook
Set db = OpenDatabase("", False, False, Globales.ConnString)
Set rs = db.OpenRecordset("SELECT Verificado, Factura, Fecha, NombreLocalidad, NombreSuplidor, Subtotal, [IVU MUNICIPAL], [IVU ESTATAL], [Total de Compra], [Exento al IVU ESTATAL], [Credito al Subtotal], [Credito IVU Municipal], [Credito IVU ESTATAL], [Metodo de Pago], [ID Metodo Pago], MetodoPago_PDF, Factura_PDF " _
& "FROM (tbl1Facturas INNER JOIN tbl5Localidades ON tbl1Facturas.Localidad_ID = tbl5Localidades.ID) " _
& "INNER JOIN tbl6Suplidores ON tbl1Facturas.Suplidor_ID = tbl6Suplidores.ID " _
& "WHERE MONTH(tbl1Facturas.Fecha) = Month(#" & Me.Text19 & "#) " _
& "AND YEAR(tbl1Facturas.Fecha) = Year(#" & Me.Text19 & "#) " _
& "AND tbl1Facturas.Localidad_ID = " & Me.Combo23.Column(0) & " " _
& "ORDER BY tbl1Facturas.Fecha;")
Set xl = CreateObject("Excel.Application")
Set wb = Workbooks.Add
wb.Sheets("Sheet1").Range("A1").CopyFromRecordset rs
xl.Visible = True