ms-access - 将记录集导出到电子表格

标签 ms-access ms-access-2007 vba ms-access-2010

刚开始掌握一些 VBA(这个东西对我来说是新的,所以请耐心等待!)

从查询 ContactDetails_SurveySoftOutcomes 中,我试图首先找到该查询中 DeptName 字段中所有唯一值的列表,因此查询字段为 07910404070x1040404040000000000000

然后,我将使用此分组列表作为再次循环执行相同查询的方式,但将每个唯一条目作为整个记录集的过滤器传递,并将每个过滤的记录集导出到其自己的 Excel 电子表格...请参阅 rsGroup 循环.

我的代码在 Do While Not ... DoCmd.TransferSpreadsheet 部分跳闸了。我对此有点陌生,但我想我的记录集的 Dim 名称 rsExport 在这种方法中不被接受。

对我已经开始的代码是否有一个简单的修复,或者我应该使用完全不同的方法来实现这一切?

代码 :

Public Sub ExportSoftOutcomes()

Dim rsGroup As DAO.Recordset
Dim Dept As String
Dim myPath As String

myPath = "C:\MyFolder\"

Set rsGroup = CurrentDb.OpenRecordset("SELECT ContactDetails_SurveySoftOutcomes.DeptName " _
& "FROM ContactDetails_SurveySoftOutcomes GROUP BY ContactDetails_SurveySoftOutcomes.DeptName", dbOpenDynaset)

Do While Not rsGroup.EOF

    Dept = rsGroup!DeptName

    Dim rsExport As DAO.Recordset
    Set rsExport = CurrentDb.OpenRecordset("SELECT * FROM ContactDetails_SurveySoftOutcomes " _
    & "WHERE (((ContactDetails_SurveySoftOutcomes.DeptName)='" & Dept & "'))", dbOpenDynaset)

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, rsExport, myPath & Dept & "\" & Dept & " - Soft Outcomes Survey.xls", True

    rsGroup.MoveNext

Loop

End Sub

固定代码 :

Public Sub ExportSoftOutcomes()

Dim rsGroup As DAO.Recordset
Dim Dept As String
Dim myPath As String

myPath = "C:\MyFolder\"

Set rsGroup = CurrentDb.OpenRecordset("SELECT ContactDetails_SurveySoftOutcomes.DeptName " _
& "FROM ContactDetails_SurveySoftOutcomes GROUP BY ContactDetails_SurveySoftOutcomes.DeptName", dbOpenDynaset)

Do While Not rsGroup.EOF
    Dept = rsGroup!DeptName

    Dim rsExportSQL As String
    rsExportSQL = "SELECT * FROM ContactDetails_SurveySoftOutcomes " _
    & "WHERE (((ContactDetails_SurveySoftOutcomes.DeptName)='" & Dept & "'))"

    Dim rsExport As DAO.QueryDef
    Set rsExport = CurrentDb.CreateQueryDef("myExportQueryDef", rsExportSQL)

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "myExportQueryDef", myPath & Dept & "\" & Dept & " - Soft Outcomes Survey.xls", True

    CurrentDb.QueryDefs.Delete rsExport.Name

    rsGroup.MoveNext
Loop

End Sub

最佳答案

你是对的,你的 rsGroup参数错误,Access 需要表名或选择查询。

试试这个代码:

strExport = "SELECT * FROM ContactDetails_SurveySoftOutcomes " _
& "WHERE (((ContactDetails_SurveySoftOutcomes.DeptName)='" & Dept & "'))"

Set qdfNew = CurrentDb.CreateQueryDef("myExportQueryDef", strExport)

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "myExportQueryDef", myPath & Dept & "\" & Dept & " - Soft Outcomes Survey.xls", True

CurrentDb.QueryDefs.Delete qdfNew.Name 'cleanup

希望有效

关于ms-access - 将记录集导出到电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336025/

相关文章:

c# - 更新后的 MS Access 数据库无法正常工作

c# - 无法将类型 'string' 隐式转换为 'System.Data.CommandType'

ms-access - 使用“查找”对话框的 MS Access “Update or CancelUpdate” 错误

database - 如果我不创建记录集对象,是否需要在 MS Access 中关闭记录集?

ms-access - 使用 Access 2007 中的 VBA 在 AutoCAD (dwg) 文件中搜索

arrays - 数组可以声明为常量吗?

MySQL 查询绘制器

ms-access - 在哪里可以找到 Microsoft Access SQL 的完整引用资料?

ms-access - 列表框多值选择

vba - 如何在每个循环中从某个点访问数组?