Excel VBA未正确引用范围对象

Excel VBA未正确引用范围对象,excel,ms-access,vba,Excel,Ms Access,Vba,我正在使用VBA从MS Access中生成Excel电子表格 我的代码是: Private Sub btn_Excel_NG_Click() Dim rst As DAO.Recordset Dim strSQL As String Dim qdfnew As DAO.QueryDef Dim RecordCount As String Dim xl As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet

我正在使用VBA从MS Access中生成Excel电子表格

我的代码是:

Private Sub btn_Excel_NG_Click()
Dim rst As DAO.Recordset
Dim strSQL As String
Dim qdfnew As DAO.QueryDef
Dim RecordCount As String
Dim xl As Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet

' ***********************
' ** CREATE QUERY
' ***********************

strSQL = "SELECT Event, DateStart, Suburb, FirstName, Name, Home, DOB, FROM SAT INNER JOIN tbl_records_emailed ON Event = Event WHERE (tbl_records_emailed.NGEmailed Is Null);"

' ***********************
' ** EXPORT TO EXCEL FILE
' ***********************

Set qdfnew = CurrentDb.CreateQueryDef("excelQuery", strSQL)
FileName = "S:\Hub\Processed\Email\" & Format(Now, "ddmmyyyy_hhmm") & ".xlsx"
DoCmd.TransferSpreadsheet acExport, 10, "excelQuery", FileName, True
DoCmd.Close acQuery, "excelQuery"
CurrentDb.QueryDefs.Delete qdfnew.Name

' ********************
' ** FORMAT EXCEL FILE
' ********************

Set xl = New Excel.Application
Set wb = xl.Workbooks.Open(FileName)
Set ws = wb.Worksheets(qdfnew.Name)

With wb.Sheets(qdfnew.Name)
    .rows("1:1").Font.Bold = True
    .Columns("A:Z").AutoFit
End With

Dim tbl As ListObject
Dim rng As Range

wb.Worksheets(qdfnew.Name).Activate
Set rng = ws.Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))

Set tbl = ws.ListObjects.Add(xlSrcRange, rng, , xlYes)
tbl.TableStyle = "TableStylemedium2"

Set tbl = Nothing
wb.Save
wb.Close
Set wb = Nothing
xl.Quit
Set xl = Nothing

End Sub
线路

Set rng = ws.Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))
导致错误的原因是:

运行时错误“1004”: 对象“\u Global”的方法“Range”失败

我理解这是因为我没有完全限定范围所在的表的引用-我认为包括“ws”将完全限定它?

尝试:

Set rng = ws.Range(ws.Range("A1"), ws.Range("A1").SpecialCells(xlLastCell))
您需要完全限定您的
范围
对象。

设置rng=ws.Range(ws.Range(“A1”)、ws.Range(“A1”).SpecialCells(xlLastCell))