CopyFromRecordset仅复制超过65535行?

时间:2018-10-17 19:30:04

标签: excel vba ms-access access-vba recordset

我正在MS Access VBA中编写一些代码。

我有一个包含110,000行的MS Access查询,我试图将它们复制到Excel电子表格中,但是当我打电话时

xlWorksheet.Range(“ A2”)。CopyFromRecordset rs

仅移植65535行。有没有办法使其移植到整个装置上?

2 个答案:

答案 0 :(得分:0)

您正在使用的excel文件很可能具有.xls格式或任何其他不兼容的格式。从下次更改您的excel文件格式,然后重试。

答案 1 :(得分:0)

如果您使用的是Excel 2003或更早版本,则65535是硬限制。如果您有Excel 2007或更高版本,那么有很多方法可以做到这一点。这是无数种方法的一种。

Sub ExportDataToExcel()
   Dim conn As ADODB.Connection
   Dim myRecordset As ADODB.Recordset
   Dim strConn As String

   strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\your_path_here\Northwind.mdb"

   Set myRecordset = New ADODB.Recordset

   FocusRow = ActiveCell.Row
   With myRecordset
       .Open "SELECT * FROM YourTable WHERE ID=" & Worksheets("Sheet1").Range("A2").Value, _
         strConn, adOpenKeyset, adLockOptimistic

      .Fields("ID").Value = Worksheets("Sheet1").Range("A" & FocusRow).Value
      .Fields("FName").Value = Worksheets("Sheet1").Range("B" & FocusRow).Value
      .Fields("LName").Value = Worksheets("Sheet1").Range("C" & FocusRow).Value
      .Fields("Address").Value = Worksheets("Sheet1").Range("D" & FocusRow).Value
      .Fields("Age").Value = Worksheets("Sheet1").Range("E" & FocusRow).Value
      .Update
      .Close
   End With
   Set myRecordset = Nothing
   Set conn = Nothing
End Sub