Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

copyfromrecordset in Bereich schreiben

Es ist möglicherweise am einfachsten, das Excel-Arbeitsblatt als verbundene Tabelle einzufügen. Zum Beispiel:

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

''Not the best way to get the name
strFile = ActiveWorkbook.FullName

''2007 / 2010 connection
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 12.0 xml;HDR=Yes;"";"

cn.Open strCon

''ODBC Connection for sql server
scn = "[ODBC;DRIVER=SQL Server;SERVER\Instance;" _ 
    & "Trusted_Connection=Yes;DATABASE=Test]"

sSQL = "SELECT a.Stuff, b.ID, b.AText FROM [Sheet5$] a " _
& "INNER JOIN " & scn & ".table_1 b " _             
& "ON a.Stuff = b.AText"
rs.Open sSQL, cn

ActiveWorkbook.Sheets("Sheet7").Cells(1, 1).CopyFromRecordset rs

Bei allen Links zu SQL Server müssen Sie ziemlich sicher sein, dass Sie mit sauberen Daten arbeiten.

Beachten Sie, dass ich mich auf Zellen bezogen habe. Wenn Ihnen die Idee, das Blatt zu verbinden, nicht gefällt, können Sie sich auch auf Zellen und Schritte beziehen, zum Beispiel For i=1 To MaxRows