VBA怎样进行数据库的两表左交操作?

sheet1表中有A、B、C三列,sheet2表中有A、D、E三列

现在需要在sheet3中生成两表左交的结果,这个VBA怎么写比较优雅?谢谢

阅读 2.5k
1 个回答
新手上路,请多包涵

Sub ExecuteSQL()

Dim cnn, rcd, sSQL, i

Set cnn = CreateObject("adodb.connection")

cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ActiveWorkbook.FullName

Set rcd = CreateObject("adodb.recordset")

sSQL = "SELECT T1.[A],T1.[B],T1.[C],T2.[D],T2.[E] FROM [Sheet1$] AS T1 LEFT JOIN [Sheet2$] AS T2 ON T1.[A]=T2.[A]"

Set rcd = cnn.Execute(sSQL)

With Sheet3
    .Cells.ClearContents

    For i = 1 To rcd.Fields.Count
        .Cells(1, i) = rcd.Fields(i - 1).Name
    Next
    
    .Cells(2, 1).CopyFromRecordset rcd
End With

rcd.Close
Set rcd = Nothing
cnn.Close
Set cnn = Nothing

End Sub

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进