错误3011-将表格传输到Excel工作簿

错误3011-将表格传输到Excel工作簿,excel,vba,transfer,Excel,Vba,Transfer,我已经试着让这个代码工作了大约5个小时,但没有任何进展。我的代码旨在将一个大表拆分为几个较小的表,并将这些表导出到excel(实际的表将超过1000000条记录)。代码继续生成错误3011,表示在transferspreadsheet命令中找不到对象“tmpdata1”。目前的代码如下: 注意:DTable是数据库中的一个现有表,在前面的编码中定义为公共字符串 Private Sub Export_over_Multiple_Sheets_Click() Dim rs As New ADODB

我已经试着让这个代码工作了大约5个小时,但没有任何进展。我的代码旨在将一个大表拆分为几个较小的表,并将这些表导出到excel(实际的表将超过1000000条记录)。代码继续生成错误3011,表示在transferspreadsheet命令中找不到对象“tmpdata1”。目前的代码如下:

注意:DTable是数据库中的一个现有表,在前面的编码中定义为公共字符串

Private Sub Export_over_Multiple_Sheets_Click()

Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Set cn = CurrentProject.Connection
Dim rowcount As Long
Dim tblcount As Integer
Dim i As Integer
Dim t As TableDef
Dim tblx As String

Dim dbsDatas As DAO.Database
Set dbsDatas = CurrentDb

dbsDatas.TableDefs.Refresh

Dim strWorksheetPathTable As String
Dim xlApp As Object
Dim xlWB As Object

'----Set File Path
strWorksheetPathTable = "O:\Data\Downstream POC\DWN Data Mgmt\Reports\"
strWorksheetPathTable = strWorksheetPathTable & "" & DTable & "\" & DTable & ".xlsb"

Set xlApp = CreateObject("Excel.Application")
Set xlWB = xlApp.Workbooks.Open("" & strWorksheetPathTable & "")

SQL = "SELECT * INTO tmpdata FROM " & DTable & ""
DoCmd.RunSQL SQL
SQL = "ALTER TABLE tmpdata ADD COLUMN id COUNTER"
DoCmd.RunSQL SQL
SQL = "SELECT count(*) as rowcount from " & DTable & ""
rs.Open SQL, cn
rowcount = rs!rowcount
rs.Close
tblcount = rowcount / 50000 + 1
For i = 1 To tblcount
SQL = "SELECT * into tmpdata" & i & " FROM tmpdata" & _
" WHERE id<=50000*" & i
DoCmd.RunSQL SQL
SQL = "DELETE * FROM tmpdata" & _
" WHERE id<=50000*" & i
DoCmd.RunSQL SQL

dbsDatas.TableDefs.Refresh
Set t = Nothing
Set t = dbsDatas.TableDefs("tmpdata" & i & "")

tblx = "tmpdata" & i & ""

DoCmd.TransferSpreadsheet transfertype:=acExport, _
    spreadsheettype:=acSpreadsheetTypeExcel12, _
    TableName:=tblx, FileName:=strWorksheetPathTable, _
    hasfieldnames:=True

Next i

xlWB.Save
xlWB.Close

End Sub
Private Sub Export\u over\u多张图纸\u Click()
将rs设置为新ADODB.Recordset
Dim cn作为新的ADODB.连接
设置cn=CurrentProject.Connection
暗行数与长行数相同
Dim TBL计数为整数
作为整数的Dim i
将t调暗为TableDef
作为字符串的Dim tblx
Dim dbsDatas作为DAO.Database
设置dbsDatas=CurrentDb
dbsDatas.TableDefs.Refresh
将strWorksheetPathTable设置为字符串
将xlApp作为对象
作为对象的Dim xlWB
'----设置文件路径
strWorksheetPathTable=“O:\Data\down POC\DWN Data Mgmt\Reports\”
strWorksheetPathTable=strWorksheetPathTable&&&DTable&“\”&DTable&.xlsb
设置xlApp=CreateObject(“Excel.Application”)
设置xlWB=xlApp.Workbooks.Open(“&strWorksheetPathTable&”)
SQL=“从”&DTable&“选择*到tmpdata”
DoCmd.RunSQL
SQL=“ALTER TABLE tmpdata添加列id计数器”
DoCmd.RunSQL
SQL=“选择count(*)作为“&DTable&”中的行计数
开放式SQL,中国
行数=卢比!行数
rs.Close
tblcount=行数/50000+1
对于i=1到tblcount
SQL=“选择*进入tmpdata”&i&“来自tmpdata”&_

“其中id找到了答案。我的编码不再使用的一些旧变量(t、xlApp、xlWB)导致了导出错误。从编码中删除这些变量修复了问题