mayu
2024/02/16 (金) 22:33:27
fc5d2@6c788
そもそも、csvもexcelもデータベースとして扱っているはずなのに、
Data Source=を使用しないのは、なぜなのでしょうか?
Data SourceはADODB.Connectionの必須プロパティになりますので
「使用していない」 のではなく
タークンさんの記述方法では 「明示していない」 というのが正確な表現になります
Sub Sample1()
Dim adoCn As ADODB.Connection
Dim incantation As String
Dim testDir As String
testDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\VBA\hoge\hogehoge"
Set adoCn = New ADODB.Connection
adoCn.Provider = "Microsoft.ACE.OLEDB.12.0"
adoCn.Properties("Extended Properties") = "Text;HDR=No"
adoCn.Open testDir
incantation = adoCn.ConnectionString
adoCn.Close
adoCn.Open incantation
Debug.Print adoCn.State
adoCn.Close
Set adoCn = Nothing
MsgBox "接続文字列中のData Sourceの位置は " & _
InStr(1, incantation, "Data Source", vbTextCompare)
End Sub
ちなみに CSVをレコードセットとしてOpenするのが目的でしたら、以下のような簡略表記も可能です
Sub Sample2()
Dim adoRs As ADODB.Recordset
Dim testDir As String
Dim strSQL As String
testDir = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\VBA\hoge\hogehoge"
strSQL = "SELECT * FROM [Text;DATABASE=" & testDir & ";HDR=NO;].holiday.csv;"
Set adoRs = CurrentProject.Connection.Execute(strSQL)
If Not adoRs.EOF Then MsgBox "CSVの列値: " & adoRs.Collect(0)
adoRs.Close
Set adoRs = Nothing
End Sub
通報 ...