Najłatwiej byłoby dołączyć arkusz Excela jako połączoną tabelę. Na przykład:
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
W przypadku jakichkolwiek łączy do SQL Server musisz mieć pewność, że pracujesz z czystymi danymi.
Zauważ, że odniosłem się do Cells. Jeśli nie podoba Ci się pomysł połączenia arkusza, możesz również odwołać się do komórek i kroku, na przykład For i=1 To MaxRows