복붙노트

[SQL] 엑셀 2013 이상 65536 행 오류 쿼리

SQL

엑셀 2013 이상 65536 행 오류 쿼리

내가 VBA를 사용하여 스프레드 시트를 조회하려고하고 (나는 엑셀 2013을 실행하고 있지만) 65536 행 보이는 하드 제한에 반대 실행하고 있습니다.

행의 수 나는 다음과 같은 오류 메시지가 65536 이상이고 모든 행을 선택하려고 할 때 :

Microsoft Access 데이터베이스 엔진은 개체를 찾을 수 없습니다 'Sheet1의 $ A1 : A65537를'.....

내 코드 :

Option Explicit

Sub ExcelQuery()

Dim conXLS As ADODB.Connection
Dim rsXLS As ADODB.Recordset
Dim strPath As String
Dim strSQL As String
Dim i As Integer

'Get the full directory + file name location of the current workbook (so it can query itself)'
strPath = Application.ActiveWorkbook.FullName

'create the ADO connection to the excel file'
Set conXLS = New ADODB.Connection
With conXLS
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & strPath & ";" & _
    "Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1;Readonly=False"""
End With
conXLS.Open

strSQL = "" & _
    "SELECT " & _
        "* " & _
    "FROM " & _
        "[Sheet1$A1:A65537] "

'create ADO recordset to hold contents of target sheet.'
Set rsXLS = New ADODB.Recordset
With rsXLS
    .CursorLocation = adUseClient
    .CursorType = adOpenForwardOnly
    .LockType = adLockReadOnly
End With

'using SQL return contents of the target sheet'
rsXLS.Open strSQL, conXLS

'disconnect the active connection'
Set rsXLS.ActiveConnection = Nothing

'Return results to excel'
Sheets("Sheet2").Cells(1, 1).CopyFromRecordset rsXLS

Set rsXLS = Nothing

'destroy the connection object'
conXLS.Close
Set conXLS = Nothing

End Sub

또한 연결 문자열을 시도 :

With conXLS
    .Provider = "Microsoft.Jet.OLEDB.12.0"
    .ConnectionString = "Data Source=" & strPath & ";" & _
    "Extended Properties=Excel 12.0;"
    .Open

나는 "OLE 자동화"를 "Microsoft ActiveX 데이터 6.0 개체 라이브러리"를로 설정 참조를 가지고있다.

흥미롭게도, MSQuery를를 사용하는 경우에는 문제가 없을 것 같습니다.

해결법

  1. ==============================

    1.(2007 년 이전) 이전 Excel 버전은 참으로 워크 시트 당 일부 65K + 행의 제한이 있습니다. 코드를 실행하고 모든 개체 lib 디렉토리가 / 엑셀 2007 w를 시작하고 참조 (워크 시트 당 최대 1,048,576 행, 해방 버전 상응 12.x 이상). 대신 [Sheet1의 $ A1 : A65537]의 : 관련 귀하의 경우에, [A Sheet1의 $ A] 표기법 사용하려고 RGDS을,

    (2007 년 이전) 이전 Excel 버전은 참으로 워크 시트 당 일부 65K + 행의 제한이 있습니다. 코드를 실행하고 모든 개체 lib 디렉토리가 / 엑셀 2007 w를 시작하고 참조 (워크 시트 당 최대 1,048,576 행, 해방 버전 상응 12.x 이상). 대신 [Sheet1의 $ A1 : A65537]의 : 관련 귀하의 경우에, [A Sheet1의 $ A] 표기법 사용하려고 RGDS을,

  2. ==============================

    2.나는 오래 전에이 문제가 발생했습니다. 내가 한 일은 이런 식으로 내 쿼리를 작성했다 :

    나는 오래 전에이 문제가 발생했습니다. 내가 한 일은 이런 식으로 내 쿼리를 작성했다 :

    select Data from [Temp$]
    

    온도 내 시트 이름이었다 경우, 셀의 내용은 A1이었다 "데이터"와 A2의 내용 : A80000은 IDS했다

    그것은했다.

  3. from https://stackoverflow.com/questions/24472183/querying-more-than-65536-rows-error-in-excel-2013 by cc-by-sa and MIT license