为什么以下代码会无限生成EXECL表?Private Sub Command9_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim strFileName As String Dim i As Long '设置导出文件路径和文件名 strFileName = "C:\Users\icd\Desktop\流水分割\" Set db = CurrentDb() strSQL = "SELECT 导出数据.* FROM 导出数据" Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot) '每10000条记录导出到一个新的文件 Do While Not rs.EOF If i Mod 10000 = 0 Then If i <> 0 Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "ExportData", strFileName & Format(i, "000000") & ".xlsx", True End If rs.Close Set rs = db.OpenRecordset("导出数据", dbOpenSnapshot) End If i = i + 1 rs.MoveNext Loop '导出最后一份文件 If i Mod 10000 <> 0 Then DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "导出数据", strFileName & Format(i - (i Mod 10000), "000000") & ".xlsx", True End If rs.Close Set rs = Nothing Set db = Nothing End Sub
时间: 2024-02-14 08:12:07 浏览: 113
这段代码会无限生成Excel表格的原因是,当i不是10000的倍数时,会导出最后一份文件,但是并不会关闭rs和db的连接,导致每次执行时都会从“导出数据”这个表中读取数据并导出到一个新的Excel文件中。
解决这个问题的方法是,在导出最后一份文件之后,添加rs和db的关闭语句,如下所示:
```
'导出最后一份文件
If i Mod 10000 <> 0 Then
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "导出数据", strFileName & Format(i - (i Mod 10000), "000000") & ".xlsx", True
End If
rs.Close
Set rs = Nothing
Set db = Nothing
```
这样就能够在导出最后一份文件之后,关闭rs和db的连接,避免出现无限生成Excel表格的问题。
阅读全文