現在、Excel VBAで2つの外部のデータベース(今回はCSVファイルとします)を結合して、データを取得、Excelシート内に書き込みを行うプログラムを構築中です。
使用ファイル1:VBA_TEST.xlsm(ファイルパス:C:\Users\User\Desktop\VBA_TEST\VBA_TEST.xlsm)
使用ファイル2:名前.csv(ファイルパス:C:\Users\User\Desktop\VBA_TEST\Child\名前.csv)
使用ファイル3:職業マスター.csv(ファイルパス:C:\Users\User\Desktop\VBA_TEST\職業マスター.csv)
2つのCSVファイルが異なるフォルダーに保存されているため、SQLにて正しくデータベースを取得することができません。
もし、2つのCSVファイルが同じフォルダーの場合は以下のVBAコードで正しく結合することができました。
修正箇所をご教示していただければ幸いです。
よろしくお願い致します。
以下がVBAのコードです。
VB
1Option Explicit 2Sub TestVBA() 3Dim objCn As New ADODB.Connection 4Dim objRS As ADODB.Recordset 5Dim strSQL As String 6 7Dim file_path As String 8file_path = "C:\Users\User\Desktop\VBA_TEST\Child" 9 10'コネクション 11With objCn 12.Provider = "Microsoft.ACE.OLEDB.12.0" 13.Properties("Extended Properties") = "Text;HDR=Yes" 14.Open file_path 15End With 16 17'SQL作成 18strSQL = "" 19strSQL = strSQL & " SELECT" 20strSQL = strSQL & " L.ID, L.名前," 21strSQL = strSQL & " R.職業" 22strSQL = strSQL & " FROM " 23strSQL = strSQL & "名前.csv" & " L" 24strSQL = strSQL & " LEFT OUTER JOIN " 25strSQL = strSQL & "職業マスター.csv" & " R" 26strSQL = strSQL & " ON" 27strSQL = strSQL & " L.職業ID = R.ID" 28 29'SQL実行 30Set objRS = objCn.Execute(strSQL) 31 32'レコードセットをシート出力 33With ThisWorkbook.Sheets(1) 34.Cells(1, 1).CopyFromRecordset objRS 35End With 36End Sub 37
以下がCSVファイルのデータセットです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/05 11:51