Je souhaite être en mesure d'associer des tables Excel à des tables MsSQL ou à d'autres tables Excel. J'essaie de tester le deuxième cas. J'essaie d'obtenir des données de la table Excel en utilisant l'OPENROWSET. Plus tard, je vais utiliser cela pour joindre des tables, mais maintenant je ne peux pas travailler même cette simple requête.Erreur de syntaxe VBA OPENROWSET dans la clause FROM
Ciselnik1
est une feuille de calcul dans le classeur Test.xlsx et contient une petite table avec tête:
FK__S_HEAD | Desc
-------------------------------
ODD AM | ODD - description1
ODDZP | ODD - desc2
Le code follwing est de lancer la "erreur de syntaxe dans la clause FROM" erreur:
Sub TestExternalSQLwithCisJoin()
Dim objConn As ADODB.Connection, objCmd As ADODB.Command, objRS As ADODB.Recordset
Dim sPath As String, sSQL As String, sConn As String
Set objConn = New ADODB.Connection
Set objCmd = New ADODB.Command
Set objRS = New ADODB.Recordset
sSQL = "SELECT * FROM OPENROWSET(""Microsoft.ACE.OLEDB.12.0"",""Database=c:\...\Test.xlsx;Extended Properties=Excel 12.0 Xml;HDR=YES"",""SELECT * FROM [Ciselnik1$]"")"
sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\...\Test.xlsm;Extended Properties=""Excel 12.0 Macro;HDR=YES"";"
Set objConn = New ADODB.Connection
'MsgBox sSQL
objConn.Open sConn
'objRS.Open sSQL, objConn, adOpenStatic, adLockBatchOptimistic, adCmdText
objConn.Execute sSQL, lngRecsAff, adExecuteNoRecords
Dim A0cell As Range
Worksheets("Test").Activate
Set A0cell = Worksheets("Test").Cells(1, 1)
A0cell.CopyFromRecordset objRS
End Sub