Доступ к макросу VBA для выполнения сквозного запроса

У меня есть сквозной запрос, встроенный в Teradata, установленный для экспорта данных в электронную таблицу Excel. Я пытаюсь автоматизировать это, но когда я запускаю макрос или открываю запрос, появляется окно с запросом источника данных. У меня создано соединение ODBC, и я думаю, что должен быть способ заставить макрос передать имя источника данных, чтобы он работал без взаимодействия.

введите описание изображения здесь

Изменить: добавление макроса по запросу

Function AutoExec()
On Error GoTo AutoExec_Err

DoCmd.OutputTo acOutputQuery, "Performance Interval Data", "ExcelWorkbook(*.xlsx)", _
"filepath\filename.xlsx", False, "", , acExportQualityPrint
    DoCmd.Quit acExit    

AutoExec_Exit:
    Exit Function

AutoExec_Err:
    MsgBox Error$
    Resume AutoExec_Exit

End Function

person TommyM    schedule 18.05.2018    source источник
comment
Вы установили строку подключения в запросе ODBC? Вы можете найти в Google строки подключения без DSN   -  person dbmitch    schedule 18.05.2018
comment
Не могли бы вы опубликовать макрос, который вы пытаетесь запустить?   -  person Jiggles32    schedule 18.05.2018
comment
Функция AutoExec () при ошибке GoTo AutoExec_Err DoCmd.OutputTo acOutputQuery, данные об интервале производительности, ExcelWorkbook (*. Xlsx), путь к файлу \ filename.xlsx, False,,, acExportQualityPrint DoCmd.Quit acExit AutoExec_ExitExit_Orror: Md.Quit. Конечная функция   -  person TommyM    schedule 18.05.2018


Ответы (1)


Пара проблем (я не могу проверить это прямо сейчас, поскольку в настоящее время у меня нет доступа к Access для тестирования), но это выглядит так:

  1. Вы пытаетесь выполнить запрос OutputTo, насколько мне известно, это невозможно.
  2. Путь к вашему файлу установлен как filepath\filename.xlsx, если это не фактическое местоположение и имя вашего листа Excel, мне кажется, что здесь что-то не так.
  3. Я действительно не думаю, что этот макрос имеет отношение к ODBC в его текущем состоянии.

Но вам следует хотя бы начать с устранения проблемы пути к файлу. Это должен быть полный путь к вашему файлу Excel, а также полное имя файла. (т.е. C:\TEMP\TestExcelSheet.xlsx)

Из всего вышесказанного вы можете просто использовать что-то вроде этого (хотя немного сложно сказать, действительно ли вы этого хотите или нет):

'Export Excel file from Query
DoCmd.TransferSpreadsheet acExport, , "acOutputQuery", _
"C:\TEMP\TestExcelSheet.xlsx", True

ПРИМЕЧАНИЕ. "acOutputQuery" должно быть фактическим именем вашего сквозного запроса, "C:\TEMP\TestExcelSheet.xlsx" - вашим целевым путем, а True добавляет заголовки запроса в лист, False чтобы игнорировать заголовки.

person Jiggles32    schedule 18.05.2018
comment
Я изменил код на то, что вы предложили, но единственное различие, которое я вижу, заключается в том, что при экспорте имена столбцов были отформатированы. Моя основная проблема в том, что когда я запускаю макрос, Access открывает окно для выбора источника данных. Мне нужно, чтобы этого не произошло. - person TommyM; 21.05.2018