【问题标题】:Access VBA Macro to run pass through query访问 VBA 宏以运行通过查询
【发布时间】:2018-05-19 09:34:01
【问题描述】:

我在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

【问题讨论】:

  • 您是否在 ODBC 查询中设置了连接字符串?你可以用谷歌搜索无 DSN 的连接字符串
  • 能否发布您尝试运行的宏?
  • 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

标签: ms-access vba pass-through


【解决方案1】:

几个问题,(目前无法验证任何这些,因为我目前无权访问 Access 进行测试),但它看起来像:

  1. 据我所知,您正在尝试 OutputTo 查询 不可行。
  2. 您的文件路径设置为filepath\filename.xlsx,除非这是您的 Excel 工作表的实际位置和名称,似乎有些东西 我错了。
  3. 我真的不认为这个宏与处于当前状态的任何类型的 ODBC 相关。

但是,您至少应该从修复 filepath 问题开始。这应该是您的 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 到忽略标题。

【讨论】:

  • 我根据您的建议修改了代码,但我能看到的唯一区别是导出的列名已格式化。我的主要问题是,当我运行宏时,Access 会弹出一个窗口来选择数据源。我需要阻止这种情况发生。
猜你喜欢
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多