これを試して
Public Sub FindInAllTables(ByVal s As String)
Dim db As DAO.Database, rs As DAO.Recordset
Dim tdf As DAO.TableDef, fld As DAO.Field
Dim pattern As String
pattern = "*" & s & "*"
Set db = CurrentDb
For Each tdf In db.TableDefs
If (tdf.Attributes And dbSystemObject) = 0 Then
On Error Resume Next
Set rs = tdf.OpenRecordset(dbOpenSnapshot)
If err.Number = 0 Then
On Error GoTo 0
Debug.Print "Scanning [" & tdf.Name & "] ";
Do Until rs.EOF()
For Each fld In rs.Fields
If fld.Value Like pattern Then
Debug.Print
Debug.Print " Match in [" & tdf.Name & "].[" & _
fld.Name & "] ===> """ & fld.Value & """";
Exit Do
End If
Next fld
If rs.AbsolutePosition Mod 1000 = 999 Then
Debug.Print ".";
End If
rs.MoveNext
Loop
Debug.Print
rs.Close
Else
On Error GoTo 0
Debug.Print "Cannot open table [" & tdf.Name & "]"
End If
End If
Next tdf
db.Close
End Sub
これにより、フィールドの任意の部分に含まれる文字列が検索されます。If fld.Value Like pattern Then
フィールド全体のみを検索する場合は、 に置き換えIf fld.Value = s Then
ます。