ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

AccessでSQLを一括実行する

MS Accessでクエリの一括実行で、どなたかが試してみたようですが、僕もまさかクエリで複数のINSERT文が実行できないとは知りませんでした。
この方は、ツールで解決したようですが、僕はあえてVBAでやってみました。こんな感じです。

Option Compare Database

Sub execFile()
    Set db = Application.CurrentDb()
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set ts = fs.OpenTextFile("..\デスクトップ\hoge.sql")
    
    While ts.AtEndOfLine = False
        lineData = ts.readLine
        db.Execute (lineData)
    Wend
    
    ts.Close
End Sub

hoge.sql

insert into test values(1, 'aaa');
insert into test values(2, 'bbb');

なんのことはない、DatabaseオブジェクトのExecuteにSQL文渡しているだけだったりします。
ところで、ファイルを開くダイアログをAccessで出すのが難しい件で、ファイルを開く ダイアログを表示する方法なんてのがあるようです。奥が深いですね。
今現場で使っているPCは、Office2003がインストールされているので、Application.FileDialogを使って出来てしまいますが。