Access + VBA + SQL – 如何将多个查询导出到一个Excel工作簿中,但是,使用表格中的条件的多个工作表

我需要一些帮助导出多个查询到一个Excel工作簿,但是,多个工作表? 使用MS Access VBA中的表中的条件

附有数据库供参考。

表名:Tbl_Final(列如下)

  • 系统
  • 用户名
  • 用户types
  • 状态
  • 工作职位

基于表“Tbl_Final”(下面的SQL查询)中的“System”列中的唯一值,我需要创buildINDIVIDUAL excel文件并将其导出到文件夹。 示例:SELECT TBL_FINAL.System,TBL_FINAL。[User ID],TBL_FINAL。[User Type],TBL_FINAL.Status,TBL_FINAL。[Job Position] FROM TBL_FINAL WHERE(((((TBL_FINAL.System)=“OS / 400”));

SELECT TBL_FINAL.System, TBL_FINAL.[User ID], TBL_FINAL.[User Type], TBL_FINAL.Status, TBL_FINAL.[Job Position] FROM TBL_FINAL WHERE (((TBL_FINAL.System)="Tab")); 

谷歌search后,我设法find一个符合标准的代码。 但遇到一些障碍:(

请求一些帮助!

===================================选项比较数据库

 Private Sub Command1_Click() Dim strSQL As String Dim dbs As Database Dim qdf As QueryDef strQry = "REPORT_QUERY" Set dbs = CurrentDb Set qdf = dbs.CreateQueryDef(strQry) strSQL = "SELECT System, [User ID], [User Type], [Status] FROM TBL_FINAL WHERE System = 'OS/400'" qdf.SQL = strSQL DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel11, _ strQry, "C:\Program Files\Export\GENERAL_EXPORT.xls", True, _ "Sheet1" strSQL = "SELECT System, [User ID], [User Type], [Status] FROM TBL_FINAL WHERE System = 'MySys'" qdf.SQL = strSQL DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel11, _ strQry, "C:\Program Files\Export\GENERAL_EXPORT.xls", True, _ "Sheet2" DoCmd.DeleteObject acQuery, strQry 

结束小组

下面的VBA代码适用于我,创build一个包含多个工作表( mySheet1mySheet2 )的新的Excel工作簿( .xlsx文件):

 Option Compare Database Option Explicit Sub ExportToXlsx() Dim cdb As DAO.Database, qdf As DAO.QueryDef Set cdb = CurrentDb Const xlsxPath = "C:\Users\Gord\Desktop\foo.xlsx" ' create .xlsx file if it doesn't already exist, and add the first worksheet Set qdf = cdb.CreateQueryDef("mySheet1", _ "SELECT * FROM Clients WHERE ID Between 1 And 5") Set qdf = Nothing DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "mySheet1", xlsxPath, True DoCmd.DeleteObject acQuery, "mySheet1" ' file exists now, so this will add a second worksheet to the file Set qdf = cdb.CreateQueryDef("mySheet2", _ "SELECT * FROM Clients WHERE ID Between 6 And 10") Set qdf = Nothing DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "mySheet2", xlsxPath, True DoCmd.DeleteObject acQuery, "mySheet2" Set cdb = Nothing End Sub 

请注意,工作表的名称取自正在导出的查询(或表)的名称。 如果在Excel文件中不存在具有该名称的工作表,则会添加它。