複数Accessファイル検索
目次
コード
Sub ファイル分割メイン()
Sub メイン()
'CreateObjectを使用する場合
'Dim DAO As Object
'Set DAO = CreateObject("DAO.DBEngine.120") 'accdbファイルの場合
'or
'Set DAO = CreateObject("DAO.DBEngine.36") 'mbdファイルの場合
Dim ws As DAO.Workspace 'ワークスペース
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim i As Long
Dim vSQL As String
Dim accessFile As String
Dim word As String
Dim lastRow As Long
Dim tgtFolder As String
tgtFolder = Range("F2").Value
'繰り返しファイルの範囲取得
Dim rngList As Range
If Range("F5").Value <> "" Then
Set rngList = Range(Range("F5"), Cells(Rows().Count, 6).End(xlUp))
Debug.Print rngList.Address
Stop
Set rngList = Union(rngList.SpecialCells(xlCellTypeConstants), rngList.SpecialCells(xlCellTypeFormulas))
Debug.Print rngList.Address
Stop
Else
MsgBox "ファイルが1つも設定されていません", vbCritical
Exit Sub
End If
'検索ワード設定
word = Sheets(sheetMENU).Range("F2").Value
'メイン処理
For Each myRng In rngList
If myRng.Value = "" Then Exit For
Set ws = DAO.DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(myRng)
vSQL = "SELECT * FROM テーブル名 WHERE 都道府県 LIKE '*" & word & "*' OR 氏名 LIKE '*" & word & "*'"
Set rs = db.OpenRecordset(vSQL, dbOpenDynaset)
'フィールド名取得
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Name
Next
'出力シートに張り付け
lastRow = 書き込み行取得(sheetOUT)
Sheets(sheetOUT).Cells(lastRow, 1).CopyFromRecordset rs
rs.Close
db.Close
ws.Close
Next myRng
End Sub
解説
複数のアクセスファイルに対して、一つの検索ワードで検索した結果を、「出力シート」に書き出し。
ツール