Excel 2013ブックの名前付き範囲でADODBクエリを実行しようとしています。行65536を超えて範囲を使用するExcel 2013での問題
次のように私のコードは次のとおりです。
Option Explicit
Sub SQL_Extract()
Dim objConnection As ADODB.Connection
Dim objRecordset As ADODB.Recordset
Set objConnection = CreateObject("ADODB.Connection") ' dataset query object
Set objRecordset = CreateObject("ADODB.Recordset") ' new dataset created by the query
objConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
objConnection.Open
objRecordset.Open "SELECT * FROM [HighRange]", objConnection, adOpenStatic, adLockOptimistic, adCmdText
If Not objRecordset.EOF Then
ActiveSheet.Cells(1, 1).CopyFromRecordset objRecordset
End If
objRecordset.Close
objConnection.Close
End Sub
を範囲HighRange
が行65536(例えばA65527:B65537)を超えて拡張する場合、私がドロップするように十分な行を削除した場合、私は、エラーメッセージ
を取得行65536より下の範囲では、コードが機能します。
このコードは、ブックを強制的に読み取り専用にして(他の誰も読み取り専用でないバージョンを開いていないようにする)場合にも機能します。
これは私が間違っていることですか、これはExcel 2013のバグですか?
(問題は、32ビット版と64ビット版の両方に存在する。また、エクセル2016に存在する)、
私は、MSoftのインスタンスがMS Accessデータベースのエンジンコードで 'int'を' long'に変更するのを忘れてしまったと推測します...バグのようなものです。 XL2016で試してみませんか? –
残念ながら、それは仕事の状況なので、Excel 2013に行っています。(Excel 2010では問題はなかったと思います) – YowE3K
http://forum.chandoo.org/threads/excel-recordset-only-戻り値-65536-rows-if-you-try-to-a-range-from-range.12492/ –