2017-08-08 2 views
0

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 

Répondre

0

OPENROWSET n'est tout simplement pas une fonction prise en charge par le fournisseur Microsoft.ACE.OLEDB.12.0.