操作 Excel sheet 作为 Access 查询结果

Manipulating Excel sheet as Access query results

我正在 运行 从 Access 查询并将结果导出到 Excel。就像我期望的那样工作。接下来我想做的是操作 Excel 文件(自动调整列、格式字段等)。从 Excel 开始,我已经无数次操纵 Excel 工作表。然而,这是第一次,从 Access 中进行。下面是我正在使用的代码。查询和导出运行很棒。

我的问题是我无法 select/激活/操作 Excel。目前打开的唯一 Excel 个文件是查询结果。但是,我确信我的用户会打开多个 Excel 文件,因此我也需要针对这种情况进行编程。

DoCmd.OutputTo acOutputQuery, "Query1", acFormatXLSX, , True

Set xlapp = GetObject(, "Excel.Application")

MyReport = ""
MyReport = xlapp.workbooks(w).Name
xlapp.Workbook(MyReport).Activate
xlapp.Workbook(MyReport).worksheets(1).Activate
                        
Range(xlapp.Workbook(MyReport).worksheets(1).cells(1, 1), xlapp.Workbook(MyReport).worksheets(1).cells(1, 1)).Select

如有任何帮助或建议,我们将不胜感激。在此先感谢您的协助.........

你可以从这样的事情开始。玩得开心!

使用 EarlyBinding:

Sub Access_ControlExcelWorkbook_EarlyBinding()
    On Error GoTo errHandler
    
    Dim appExcel As New Excel.Application
    Dim xWb As Excel.Workbook
    Dim xWs As Excel.Worksheet
    Dim xRng As Excel.Range

    Dim wbPath As String: wbPath = "YourWorkbookPath"
    
    ' Exit if workbook don't  exist
    If Len(Dir(wbPath)) = 0 Then Exit Sub
    
    ' Open workbook
    Set xWb = appExcel.Workbooks.Open(wbPath)
    
    ' Show Excel
    appExcel.Visible = True
    
    ' Sheet to control
    Set xWs = xWb.Worksheets("Sheet1")
    
    ' Range to control
    Set xRng = xWs.Range("A10")
    
    ' Write value in range
    xRng.Value = "Control from Access"

    ' Auto fit columns
    xWs.Cells.EntireColumn.AutoFit
    
    ' Save workbook
    xWb.Save

exitRoutine:
    ' Close workbook
    xWb.Close False

    ' Close Excel
    appExcel.Quit
    
    Exit Sub

errHandler:
    Debug.Print Err.Description
    Resume exitRoutine
End Sub

具有后期绑定

Public Const xlCenter = -4108
    
Sub Access_ControlExcelWorkbook_LateBinding()
        On Error GoTo errHandler
        
        Dim appExcel As Object
        Dim xWb As Object
        Dim xWs As Object
        Dim xRng As Object
    
        Dim wbPath As String: wbPath = "YourWorkbookPath"
        
        ' Exit if workbook don't  exist
        If Len(Dir(wbPath)) = 0 Then Exit Sub
        
        ' Create an instance od Excel
        Set appExcel = CreateObject("Excel.Application")
            
        ' Copy the rest of the code from early Binding
 
        ' Center column G
         xWs.Columns("G:G").HorizontalAlignment = xlCenter

    End Sub