台灣最大程式設計社群網站
線上人數
925
 
會員總數:246088
討論主題:189663
歡迎您免費加入會員
討論區列表 >> office VBA / WinOS >> 如何利用sql合併多筆資料
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何利用sql合併多筆資料
價值 : 100 QP  點閱數:122 回應數:0
樓主

rdeye
門外漢
0 1
8 0
發送站內信

我要在excel[quote] vba中利用sql語法合併資料,也就是將欄位1資料相同者的欄位2內容合併,如下:


我試著用FOR XML PATH('')的語法,但一直出現SQL語法錯誤的訊息,我花了好幾天仍無法解決此問題,若使用VBA的Dictionary函數,儲存格內容若超過255字元也會出現錯誤,所以我還是希望能用SQL的方式處理資料,請各位高手協助修正語法,拜託了~~~~

程式如下:

[code]
Sub sql測試()
'Microsoft ActiveX Data Objects 2.X Library 設定引用項目
Dim myCon As New ADODB.Connection
Dim myRst As New ADODB.Recordset
Dim myCnc As String
Dim myCmd As String
Dim myFileName As String
Dim i As Long
myFileName = "test.xlsm" '讀入檔案
myCnc = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
"DBQ=" & ThisWorkbook.Path & "\" & myFileName & ";"
'以SQL來指定讀入資料
myCmd = "select distinct b.欄位1,(select a.欄位2+CHAR(10) from [工作表1$] a where a.欄位1=b.欄位1 for xml path('')) as 欄位3 from [工作表1$] b"

myCon.Open "Provider=MSDASQL;" & myCnc
myRst.Open Source:=myCmd, ActiveConnection:=myCon '開啟記錄集
Worksheets("工作表2").Select '工作表的選擇

With myRst
'欄名
For i = 1 To .Fields.Count
Cells(1, i).Value = .Fields(i - 1).Name
Next
'記錄
Range("A2").CopyFromRecordset myRst
.Close
End With
myCon.Close
Set myRst = Nothing '物件的釋放
Set myCon = Nothing
End Sub

[/code]


搜尋相關Tags的文章: [ EXCEL VBA ] , [ SQL ] ,
本篇文章發表於2020-10-05 11:41
目前尚無任何回覆
   

回覆
如要回應,請先登入.