0

我有一个名为 TEST 的表,我在下面有代码,它根据 Territory 列中的唯一值循环导出查询。

该代码应该根据 Territory 列中的唯一值将数据导出到 excel 文件。所以每个 Territory 值都会有它自己的文件。

我在设置 sql 查询以及如何使用字符串值来选择数据时遇到问题:

Sub TEST()

    Dim db As DAO.Database
    Dim rs1 As DAO.Recordset
    Dim v As String

    Set db = CurrentDb()
    Set rs1 = db.OpenRecordset("Select Distinct Territory From TEST")

    Do While Not rs1.EOF
        v = rs1.Fields(0).Value

        **DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _
        "WHAT SHOULD MY QUERY BE TO USE STRING v?", "C:\Users\me\Desktop\VBA_TEST\" v & ".xls", True**

        rs1.MoveNext
    Loop

    rs1.Close

End Sub

有人可以指导我如何编写查询并连接字符串 v 以便循环输出报告吗?

谢谢!

4

1 回答 1

0

我认为您需要使用现有查询,而不仅仅是您的查询作为 TransferSpreadsheet 方法的字符串。这意味着您将需要一个临时查询对象来传输您的电子表格。

您可以通过将变量连接到 SQL 字符串来添加要查询的变量,确保对于文本字段,您在任一侧都包含一个 ' 并为数字字段保留它。

Sub TEST()
    Dim db As DAO.Database
    Dim rs1 As DAO.Recordset
    Dim v As String

    Set db = CurrentDb()
    Set rs1 = db.OpenRecordset("Select Distinct Territory From TEST")

    Dim strQry As String
    Dim qdfTemp As DAO.QueryDef
    Dim strQDF As String
    strQDF = "_TempQuery_"

    Do While Not rs1.EOF
        v = rs1.Fields(0).Value

        strQry = "SELECT * FROM TEST WHERE Territory = '" & v & "'"

        Set qdfTemp = CurrentDb.CreateQueryDef(strQDF, strQry)
        qdfTemp.Close
        Set qdfTemp = Nothing

        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _
        strQDF, "C:\Users\me\Desktop\VBA_TEST\" & v & ".xls", True

        CurrentDb.QueryDefs.Delete strQDF
        rs1.MoveNext
    Loop

    rs1.Close

End Sub
于 2013-09-10T20:24:39.507 回答