VBA - Generate Excel File from Access (QueryTable)

后端 未结 3 609
梦谈多话
梦谈多话 2021-02-09 00:08

I have a project that basically the goal is to generate Excel (Report) starting the Click of a button in Access using VBA.

The contents of this report is the result of a

3条回答
  •  北恋
    北恋 (楼主)
    2021-02-09 00:45

    FWIW, two things stand out:

    1. As @Remou pointed out, Excel references need to be qualified. Currently, Range("A2") is unqualified. When running the code in Excel, the ActiveSheet is assumed. However, when running from another application, that application will look for a method or property in its own library called Range, which will give you that error in Microsoft Access.

    2. There isn't any code in the With block, so you can remove the With and End With keywords; when you do this also remove the outer (), like this:

    wb.Worksheets(4).QueryTables.Add Connection:=rs, Destination:=wb.Worksheets(4).Range("A2")

    Alternatively, shift the With block to the Worksheet level:

    With wb.Worksheets(4)
        .QueryTables.Add Connection:=rs, Destination:=.Range("A2")
    End With
    

    Update—Access to Excel Sample

    This sample code automates Excel from Access, creating a new workbook and adding a Querytable to the first sheet. The source data is an Access table. This runs in Office 2007.

    Public Sub ExportToExcel()
      Dim appXL As Excel.Application
      Dim wbk As Excel.Workbook
      Dim wst As Excel.Worksheet
      Dim cn As ADODB.Connection
      Dim rs As ADODB.Recordset
    
      Set appXL = CreateObject("Excel.Application")
      appXL.Visible = True
      Set wbk = appXL.Workbooks.Add
      Set wst = wbk.Worksheets(1)
    
      Set cn = CurrentProject.AccessConnection
      Set rs = New ADODB.Recordset
      With rs
        Set .ActiveConnection = cn
        .Source = "SELECT * FROM tblTemp"
        .Open
      End With
    
      With wst
        .QueryTables.Add Connection:=rs, Destination:=.Range("A1")
        .QueryTables(1).Refresh
      End With
    
    End Sub
    

提交回复
热议问题