尝试 运行 Excel 从访问格式导出 Table,获取所需对象错误

Trying to Run Excel from Access to Format Exported Table, Get Object Required Error

我正在尝试自动将 table 从 Access 导出到 Excel 报告中。根据我对 Stack Overflow 的研究,建议有一个 VBA 代码用于导出,然后另一个代码用于格式化 Excel sheet。我非常希望 运行 来自 Access 的 Excel sheet 的格式,所以我只需按一下按钮即可导出。我非常讨厌 运行 发布这份报告,因为当我有其他紧迫的事情要做时,每个人都想要它 "right now"。是公司总裁办公室的,我这种小白就得跳槽了。

我在这里找到了这个建议的代码:,但我收到了 "Object variable or With block variable not set"

的错误
Sub FormatACTrade(strFilePath As String) 'I'm running this from another _
sub that exports the tables to excel, I know functions are needed for _
an output but this is a private variable that I'm using within a modle_
so should be ok??

On Error GoTo ErrorHandler

Dim objFile As Object

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.DisplayAlerts = False
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(strFilePath)

If objFso.GetExtensionName(objFile.Path) = "xlsx" Then
     Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)
     For Each sh In objWorkbook.Worksheets
If sh.UsedRange.Address <> "$A" Or sh.Range("A1") <> "" Then
        With sh
        [Do stuff]
        End With
    End If
    Next
    objWorkbook.Close True
End If
End Sub

如有任何建议,我们将不胜感激。我是编码新手,我不得不承认有关 vba 对象、脚本和应用程序的文档很难理解。我知道我没有正确命名一个对象,但我真的不明白代码在这一行做什么 Set objWorkbook = objExcel.Workbooks.Open(objFile.Path).

考虑取消对 objFSO 的任何需求。以前的代码需要这个对象来遍历文件。由于您知道 Excel 文件路径,只需将其传递到 Workbooks.Open() 方法中即可:

Sub FormatACTrade(strFilePath As String)    
    Dim objExcel As Object, objWorkbook As Object, sh As Object

    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = False
    objExcel.DisplayAlerts = False

    ' OPEN WORKBOOK (IN BACKGROUND)
    Set objWorkbook = objExcel.Workbooks.Open(strFilePath)

    For Each sh In objWorkbook.Worksheets
       If sh.UsedRange.Address <> "$A" Or sh.Range("A1") <> "" Then
          With sh
            [Do stuff]
          End With
       End If
    Next sh

    ' CLOSE AND SAVE WORKBOOK
    objWorkbook.Close True
    ' QUIT APP
    objExcel.Quit

    ' FREE RESOURCES
    Set objWorkbook = Nothing
    Set objExcel = Nothing
End Sub