VBA运行时错误3326:此logging集在交叉表查询上不可更新

我试图从Access到Excel输出一个交叉表查询,我读了2010年最好使用OutputTo方法,而不是TransferSpreadsheet方法。 我有以下代码行,有时它完美地工作,有时它踢VBA运行时错误3326:此logging集是不可更新的。 我没有试图更新任何数据 – 我只是想将结果数据导出到Excel。

DoCmd.OutputTo acOutputQuery, "qryStates_1_Crosstab", "ExcelWorkbook(*.xlsx)", my_filename, False 

还有什么我需要做的,使其输出正确?

的DoCmd

使用交叉表查询的结果创build一个临时表:

 DoCmd.RunSQL "SELECT INTO tempTable FROM qryStates_1_Crosstab" 

然后将该表导出到Excel而不是查询:

 DoCmd.OutputTo acOutputQuery, "tempTable", "ExcelWorkbook(*.xlsx)", my_filename, False 

之后(或下一次导出之前)清除临时表中的数据:

 DoCmd.RunSQL "DELETE * FROM tempTable" 

或者只是删除表格:

 DoCmd.DeleteObject acTable, "tempTable" 

每个这些行动将popup警告和确认。 如果您不想要警告,可以使用以下命令将其closures:

 DoCmd.SetWarnings False 

只要确保在子结束时或之前重新打开警告:

 DoCmd.SetWarnings False 

DoCmd也可以做很多很酷的东西。 在这里阅读 。