Я пытаюсь заставить этот код работать около 5 часов без прогресса. Мой код нацелен на то, чтобы разбить большую таблицу на несколько меньших таблиц и экспортировать их в excel (фактические таблицы превысят 1000000 записей). Код продолжает выдавать ошибку 3011, заявляя, что не может найти объект 'tmpdata1' в команде transferpreadsheet. Текущий код выглядит следующим образом:Ошибка 3011 - Таблица переноса в Excel Workbook
ПРИМЕЧАНИЕ. 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
Я понимаю, что кодирование может быть немного грязный, я только учил себя VBA в течение нескольких месяцев до сих пор. Любая помощь будет принята с благодарностью.
Dane I