Sub RecoveryQueryFromExpostText()
Dim cDB As DAO.Database: Set cDB = CurrentDb
Dim oFolder, oFil, fs
Dim Q As QueryDef
Dim buf As String
Dim sr 'As ADODB.Stream
Dim ar() As String, i As Long
Dim Qname As String
Const adModeReadWrite = 3
Const adTypeText = 2
Const adReadAll = -1
'Set sr = New ADODB.Stream
Set sr = CreateObject("ADODB.Stream")
sr.Mode = adModeReadWrite
sr.Charset = "Shift_Jis"
sr.Type = adTypeText
Set fs = CreateObject("Scripting.FileSystemObject")
Set oFolder = fs.GetFolder("C:\Hoge\Hoge_Text") 'データのあるフォルダ
'クエリ
i = 0
For Each oFil In oFolder.Files
If fs.GetExtensionName(oFil) = "txt" And Right(fs.GetBaseName(oFil), 4) = "_SQL" Then
If Left(fs.GetBaseName(oFil), 1) <> "_" Then
ReDim Preserve ar(0 To i)
ar(i) = oFil.Path: i = i + 1
End If
End If
Next
Set fs = Nothing: DoEvents
sr.Open
For i = LBound(ar) To UBound(ar)
sr.LoadFromFile ar(i)
Debug.Print ar(i)
'Do While Not sr.EOS
'次の行を読み取る
buf = buf & sr.ReadText(adReadAll) '& vbCrLf
'Loop
Set fs = CreateObject("Scripting.FileSystemObject")
Qname = Replace(fs.GetBaseName(ar(i)), "_SQL", "", 1, -1)
Set fs = Nothing: DoEvents
DoEvents
For Each Q In cDB.QueryDefs
If Q.Name = Qname Then DoCmd.DeleteObject acQuery, Qname: Exit For
Next
Set Q = cDB.CreateQueryDef(Qname, buf)
cDB.QueryDefs.Refresh
buf = ""
Next
End Sub
使用条件
Accessで必ず使うVBA ほぼ完全なエクスポート 全オブジェクト+参照設定リストをエクスポート のVBA/VBSで出力したフォルダの
第一文字目がアンダーバーではない
Shift Jisのテキストファイルで
"_SQL.txt"
となっているもの。
を対象としています。
Set oFolder = fs.GetFolder("C:\Hoge\Hoge_Text")
"C:\Hoge\Hoge_Text"
これを出力したフォルダ名に書き換えてください。