Access+VBA+SQL-如何将多个查询导出到一个excel工作簿中,但使用表中的条件导出多个工作表
我需要一些关于将多个查询导出到一个excel工作簿的帮助,但是,多个工作表?使用MS Access VBA中表格中的条件 附件为DB供参考 表名:Tbl_最终列如下 系统 用户ID 用户类型 地位 职位 根据下面表Tbl_Final SQL query中列系统中的唯一值,我需要创建单个excel文件并将其导出到文件夹。 例子: 选择TBL_FINAL.System,TBL_FINAL.[用户ID],TBL_FINAL.[用户类型],TBL_FINAL.Status,TBL_FINAL.[职位] 来自TBL_决赛 其中TBL_FINAL.System=OS/400Access+VBA+SQL-如何将多个查询导出到一个excel工作簿中,但使用表中的条件导出多个工作表,sql,excel,vba,ms-access-2007,Sql,Excel,Vba,Ms Access 2007,我需要一些关于将多个查询导出到一个excel工作簿的帮助,但是,多个工作表?使用MS Access VBA中表格中的条件 附件为DB供参考 表名:Tbl_最终列如下 系统 用户ID 用户类型 地位 职位 根据下面表Tbl_Final SQL query中列系统中的唯一值,我需要创建单个excel文件并将其导出到文件夹。 例子: 选择TBL_FINAL.System,TBL_FINAL.[用户ID],TBL_FINAL.[用户类型],TBL_FINAL.Status,TBL_FINAL.[职位]
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"));
在谷歌搜索之后,我设法找到了一个符合标准的代码。但是遇到了一些障碍:
请求帮助
===================================
选项比较数据库
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
End Sub以下VBA代码适用于我,创建了一个新的Excel工作簿.xlsx文件,其中包含多个工作表mySheet1和mySheet2: 选项比较数据库 选项显式 次级出口LSX Dim cdb作为DAO.Database,qdf作为DAO.QueryDef 设置cdb=CurrentDb Const xlsxPath=C:\Users\Gord\Desktop\foo.xlsx '如果.xlsx文件不存在,则创建该文件,并添加第一个工作表 设置qdf=cdb.CreateQueryDefmySheet1_ 从ID介于1和5之间的客户端选择* 设置qdf=无 DoCmd.transfer电子表格acExport,acSpreadsheetTypeExcel12Xml,mySheet1,xlsxPath,True DoCmd.DeleteObject acQuery,mySheet1 '文件现在存在,因此这将向该文件添加第二个工作表 设置qdf=cdb.CreateQueryDefmySheet2_ 从ID介于6和10之间的客户端选择* 设置qdf=无 DoCmd.transfer电子表格acExport,acSpreadsheetTypeExcel12Xml,mySheet2,xlsxPath,True DoCmd.DeleteObject acQuery,mySheet2 设置cdb=无 端接头
请注意,工作表的名称取自要导出的查询或表的名称。如果Excel文件中不存在具有该名称的工作表,则将添加该工作表。有趣的是,此DoCmd.TransferSpreadsheet acExport、acSpreadsheetTypeExcel12、Table4、test.xlsx、True DoCmd.TransferSpreadsheet acExport、acSpreadsheetTypeExcel12、Query6、test.xlsx、True将在test.xlsx中创建两个新工作表,即使文件已经存在。新工作表将根据查询或表名命名。我经常使用它进行调查分析。@Remou是的,这是真的,我的代码就是这么做的。我在回答中又添加了一些评论以澄清问题。谢谢。嗨,Gord,使用上面的代码,我能够将excel导出到路径中硬编码的路径。我能够找到提示用户选择保存导出的文件路径的代码。我想知道,如何将其包含在代码中,并为每个文件附加唯一的系统值。示例:DoCmd.transfer电子表格acExport、acSpreadsheetTypeExcel12Xml、mySheet2、xlsxPath和OS400&,TrueSub FolderPicker Dim fd As Office.FileDialog Dim path As String Dim notCancel As Boolean Set fd=Application.FileDialogmsoFileDialogFolderPicker With fd notCancel=。如果不取消,则显示path=。SelectedItems1 MsgBox选定的文件夹为&path,VBA信息结束,如果以结束结束Sub@user3217907将子FolderPicker更改为函数FolderPicker As String,并使其返回路径值。在主代码中,执行xlsxPath=FolderPicker,然后在最近的评论中尝试修改后的DoCmd.TransferSpreadsheet。如果你被卡住了,那就问一个问题。