Ответ 1
Если ваш интерес заключается в поиске модулей кода в файле базы данных Access, вы можете использовать объектную модель VBE. В этом примере выполняется поиск слова во всех модулях ActiveVBProject
текущей базы данных. Если база данных содержит более одного VBProject, вы можете перечислить коллекцию VBProjects и поочередно искать проекты по имени:
For Each objComponent In Application.VBE.VBProjects(ProjName).VBComponents
Или, если вы предпочитаете ссылаться на проект по номеру, а не по имени, просто знайте, что нумерация начинается с 1, а не из 0.
Public Sub findWordInModules(ByVal pSearchWord As String)
'Dim objComponent As VBComponent
' VBComponent requires reference to Microsoft Visual Basic
' for Applications Extensibility; use late binding instead:
Dim objComponent As Object
Dim strMessage As String
Dim strModuleList As String
strModuleList = vbNullString
For Each objComponent In Application.VBE.ActiveVBProject.VBComponents
If objComponent.CodeModule.Find(pSearchWord, 1, 1, -1, -1) = True Then
strModuleList = strModuleList & "; " & objComponent.Name
End If
Next objComponent
strMessage = "Text '" & pSearchWord & "' found in "
If Len(strModuleList) > 0 Then
strMessage = strMessage & "modules: " & Mid(strModuleList, 3)
Else
strMessage = strMessage & "no modules"
End If
Debug.Print strMessage
End Sub
Просмотрите раздел справки Access для этого метода Find
; вы можете предпочесть различные варианты, чем я использовал.
Если вы хотите настроить таргетинг на несколько файлов db и искать модули в каждом, вы можете автоматизировать это с помощью метода OpenDatabase
. Я оставлю детали этой части вам.