使用VBA将数据从MS Access导出到Excel

| 我在MS Access中有一张表,其中有以下数据要导出到excel 发布编号 测试用例 结果 导出到Excel后,我希望有不同的发行版号(从A2开始的行)和不同的测试用例名称(从B1开始的列)。可能有成千上万条记录。然后,将每个单元格设置为结果标签。另外,将需要一些精美的着色/边框材料。 问题-是否可以在Access中使用VBA进行此操作,如果可以,该怎么做?任何提示,示例,示例,资源都将不胜感激...我已经用Google搜索过,但遇到的最多的东西是
DoCmd.TransferSpreadsheet
DoCmd.OutputTo
,我相信它们不会满足我的要求。看到了一些带有ѭ2examples的示例,但不确定使用这种方式的局限性和性能。     
已邀请:
是的,在许多情况下,DoCmd.TransferSpreadsheet命令不适当。 最简单的方法是在Access(早期绑定)中引用Excel xx.x对象模型。以这种方式创建和测试您的vba导出功能。然后,对输出满意后,请删除Excel对象模型引用,然后将对象更改为使用使用CreateObject的后期绑定。这使您可以轻松地使使用不同版本的Excel / Access的其他计算机完全相同地使用它。 这是一个简单的示例:
Sub ExportRecordsetToExcel(outputPath As String, rs As ADODB.Recordset)
\'exports the past due report in correct formattig to the specified path

On Error GoTo handler:

    Const xlUP              As Long = -4162 \'excel constants if used need to be referenced manually!
    Dim oExcel              As Object
    Dim oBook               As Object
    Dim oSheet              As Object
    Dim row                 As Long

    If rs.BOF And rs.EOF Then
        Exit Sub \'no data to write
    Else
        rs.MoveFirst
    End If

    row = 1

    Set oExcel = CreateObject(\"Excel.Application\")
    oExcel.Visible = False \'toggle for debugging

    Set oBook = oExcel.Workbooks.Add \'default workbook has 3 sheets

    \'Add data to cells of the first worksheet in the new workbook.
    Set oSheet = oBook.worksheets(1)

    Do While rs.EOF = False

        oSheet.range(\"A\" & row).value = rs.Fields(\"MyField\").value

        \'increase row
        row = row + 1
    Loop

    oBook.SaveAs (outputPath)

\'tidy up, dont leave open excel process
    Set oSheet = Nothing
    Set oBook = Nothing
    oExcel.Quit
    Set oExcel = Nothing
Exit Sub
handler:

    \'clean up all objects to not leave hanging processes
End Sub
    
我不知道它是否适合您的情况,但是您可以尝试将VBA代码添加到Excel文档而不是Access数据库中。然后,您可以从Excel文件中刷新数据并在其中添加格式更加容易。这是一个例子: http://www.exceltip.com/st/Import_data_from_Access_to_Excel_%28ADO%29_using_VBA_in_Microsoft_Excel/427.html (或在http://www.exceltip.com/exceltips.php?view=category&ID=213上查看其他示例) 同样,它可能不适用于您的情况,但可以考虑考虑。本质上,您可以从Excel中提取,而不是从Access中推送。     

要回复问题请先登录注册