Excel VBA ADO SQL - Syntaxfehler in der From-Klausel

Die folgende SQL in VBA ADO gibt den Fehler "Syntaxfehler in From-Klausel".

Sub RunSQL2()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strFile As String
    Dim strCon As String
    Dim strSQL As String
    Dim ws As Worksheet
    Dim strRangeAddress As String
    Dim dataRange As Range

    strFile = ThisWorkbook.Path & "\" & ThisWorkbook.Name
    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
        & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    cn.Open strCon

    Set ws = ThisWorkbook.Sheets("mydata")
    strRangeAddress = ActiveSheet.Name & "$" & ws.Range("A1:C30020").Address(False, False)

        strSQL = strSQL & " (select s.* from "
strSQL = strSQL & " (select t.*, row_number() over (partition by child_level order by child_index,child_level) [rownum] from [" & strRangeAddress & "] t) s "
strSQL = strSQL & " where [rownum] = 1) u "
strSQL = strSQL & " join (select t2.*, 1 as  [rownum] from [" & strRangeAddress & "] t2) v "
strSQL = strSQL & " on (v.parent_level = u.child_level and v.[rownum] = u.[rownum]) "
strSQL = strSQL & " union select  w.child_index,w.child_level,w.child_level,w.child_index "
strSQL = strSQL & " from [" & strRangeAddress & "] w "
strSQL = strSQL & " where w.child_index = 1 "
strSQL = strSQL & " order by v.child_index;"


    rs.Open strSQL, cn

    Debug.Print rs.GetString

End Sub

Die debug.print von strSQL ist:

select v.child_index,v.child_level,v.parent_level,u.child_index as  parent_index 
from  
  (select s.* 
   from  
     (select t.*, row_number() over (partition by child_level order by child_index,child_level) [rownum] 
      from [mydata$A1:C30020] t
     ) s  
   where [rownum] = 1
  ) u  
join 
  (select t2.*, 1 as  [rownum] 
   from [mydata$A1:C30020] t2
  ) v  on (v.parent_level = u.child_level and v.[rownum] = u.[rownum])  

union 

select  w.child_index,w.child_level,w.child_level,w.child_index  
from [mydata$A1:C30020] w  
where w.child_index = 1  
order by v.child_index;

Wenn ich einen einfachen strSQL-String verwende, funktioniert die Verbindung und es werden Ergebnisse zurückgegeben. Das funktioniert

strSQL = "SELECT * FROM [" & strRangeAddress & "]"

Ich glaube, ich habe die richtige Syntax. Ist es möglich, dass der Fehler auf nicht kompatibles SQL zurückzuführen ist? Kann ADO beispielsweise "Partition by" ausführen?

ch verwende Excel 2010 64-Bit-Offic

Antworten auf die Frage(2)

Ihre Antwort auf die Frage