免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
如何在vba中用ado合并不同excel工作簿的內容?
userphoto

2022.06.20 河北

關注

如何在vba中用ado訪問各種不同的數(shù)據(jù)源? 一文中我們介紹了用ado訪問excel數(shù)據(jù)源的方法。

但是我們經(jīng)常需要訪問的數(shù)據(jù)位于多個不同的文件中,這時候可以采用如下的步驟:

  1. 先用連接字符串連接其中一個excel工作簿。
  2. 在SQL語句中用[Excel 12.0;Database=” & Excel.ThisWorkbook.Path & “\test1.xlsx].[Sheet1$] 這樣的形式訪問其它的excel工作簿。
  3. 如果要合并的excel工作簿特別多,可以先用代碼構造合并的SQL語句。
Sub QQ1722187970()
    Dim oRecrodset
    Dim oConStr
    Dim sSql As String
    Dim oWk As Worksheet
    Dim sConStr As String
    Dim oWB As Workbook
    Set oWk = Excel.ThisWorkbook.Worksheets.Add
    Dim sPath As String
    sPath = Excel.ThisWorkbook.Path
    sKC = VBA.Dir(sPath & "\*庫存*.xls*", vbNormal)
    sXs = VBA.Dir(sPath & "\*銷售*.xls*", vbNormal)
    Set oWB = Excel.Workbooks.Open(sPath & "\" & sKC)
    Set oWk1 = oWB.Worksheets(1)
    sKCName = oWk1.Name
    oWB.Close
    set oWB = Excel.Workbooks.Open(sPath & "\" & sXs)
    Set oWk1 = oWB.Worksheets(1)
    sXsname = oWk1.Name
    oWB.Close
    sVersion = Excel.Application.Version
    If sVersion <= 12 Then
        sConStr = "Provider='Microsoft.Jet.OLEDB.4.0';Data Source=" & Excel.ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=YES;MAXSCANROWS=16'"
    Else
        sConStr = "Provider='Microsoft.ACE.OLEDB.12.0';Data Source=" & Excel.ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=YES;MAXSCANROWS=16'"
    End If
    Debug.Print sConStr
    Set oConStr = CreateObject("ADODB.Connection")
    '使用Connection連接數(shù)據(jù)源,并用Execute方法執(zhí)行對應的SQL語句生成Recrodset對象
    oConStr.Open sConStr
    '在SQL語句中連接外部數(shù)據(jù)源的標準語法
    sSql = "select a.商品名稱 as 商品名稱,a.規(guī)格名稱 as 規(guī)格,b.銷售數(shù)量 as 銷售數(shù)量,a.實際庫存 as 實際庫存 from [Excel 12.0;Database=" & sPath & "\" & sKC & "].[" & sKCName & "$] as a,[Excel 12.0;Database=" & sPath & "\" & sXs & "].[" & sXsname & "$] as b where a.商品編碼=b.商品編碼"
    Debug.Print sSql
    Set oRecrodset = oConStr.Execute(sSql)
    With oRecrodset
        '循環(huán)導入字段名
        For i = 1 To .Fields.Count
            oWk.Cells(1, i) = .Fields(i - 1).Name
        Next
        oWk.Cells(2, 1).CopyFromRecordset oRecrodset
    End With
    Set oRecrodset = Nothing
End Sub

如果用的是Microsoft.Jet.OLEDB.4.0,則需要使用”[Excel 8.0;Database=”這樣的形式訪問外部的數(shù)據(jù)源。

如果用的是Microsoft.ACE.OLEDB.12.0,則推薦使用”[Excel 12.0;Database=”這樣的形式訪問外部的數(shù)據(jù)源。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何用vba不打開excel文件讀寫數(shù)據(jù)?
VBA【常用案例】
使用ADO篩選Excel工作簿中的數(shù)據(jù)
Excel VBA ADO SQL入門教程021:ADO常用連接字符串
如何將 Excel 數(shù)據(jù)導入 SQL Server
和山山哥一起學VBA,學以致用搞11選5之先刪表再建表(三)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服