如果您的興趣是在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
查看該Find
方法訪問幫助主題開始;你可能更喜歡不同的選擇,而不是我用過
如果要定位多個db文件並搜索每個文件中的模塊,可以使用OpenDatabase
方法自動執行此操作。我將把這部分的細節留給你。
沒有,如果它在接取相同的,但這裏的想法就是我會做這在Excel中:http://www.cpearson.com/Excel/vbe.aspx – 2012-04-12 15:13:09
來看看這CodeProject上項目點子 - http://www.codeproject.com/Articles/18029/SourceTools-xla。查看保存項目功能以及它們如何解析vba項目中的所有源文件。 – ja72 2012-04-12 19:12:56
@ ja72如果這個add-inn可以用於Access,或者我可以修改它,那麼如果我們見面,我會給你一個雙喜。 – 2012-04-12 19:35:30