gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:33:09 26 4
gpt4 key购买 nike

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

附件是供引用的数据库。

表名:Tbl_Final(下面列出的列)

  • 系统
  • 用户名
  • 用户类型
  • 状态
  • 职位

基于表“Tbl_Final”(下面的 SQL 查询)中“系统”列中的唯一值,我需要创建个人 excel 文件并将其导出到文件夹。例子:SELECT TBL_FINAL.System, TBL_FINAL.[User ID], TBL_FINAL.[User Type], TBL_FINAL.Status, TBL_FINAL.[Job Position]来自 TBL_FINALWHERE (((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"));

谷歌搜索后,我设法找到了符合条件的代码。但是遇到了一些障碍:(

请求帮助!!

Option Compare Database

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 代码适用于我,创建一个包含多个工作表(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 文件中不存在具有该名称的工作表,则会添加该工作表。

关于sql - Access + VBA + SQL - 如何使用表中的条件将多个查询导出到一个 Excel 工作簿,但是,多个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com