PDA

Vollständige Version anzeigen : Alle Module durchsuchen


Morli
13.06.2001, 07:26
Hallo Super-Forum!

Kann mir jemand von euch sagen, wie ich mittels VBA alle Module (Standardmodule und Klassenmodule) nach eine bestimmten String durchsuchen kann.
Über das Menü geht es ja mit Bearbeiten -> Suchen -> aktuelle Datenbank.

Wenn mir da jemand helfen kann, erspare ich mir jede Mende Tiparbeit!

Gruß

Rainer :)

Stema
13.06.2001, 12:52
Hallo Rainer,
in der Hilfe habe ich folgendes gefunden:

Function FindAndReplace(strModuleName As String, strSearchText As String, _
strNewText As String) As Boolean
Dim mdl As Module
Dim lngSLine As Long, lngSCol As Long
Dim lngELine As Long, lngECol As Long
Dim strLine As String, strNewLine As String
Dim intChr As Integer, intBefore As Integer, intAfter As Integer
Dim strLeft As String, strRight As String

' Open module.
DoCmd.OpenModule strModuleName
' Return reference to Module object.
Set mdl = Modules(strModuleName)

' Search for string.
If mdl.Find(strSearchText, lngSLine, lngSCol, lngELine, lngECol) Then
' Store text of line containing string.
strLine = mdl.Lines(lngSLine, Abs(lngELine - lngSLine) + 1)
' Determine length of line.
intChr = Len(strLine)
' Determine number of characters preceding search text.
intBefore = lngSCol - 1
' Determine number of characters following search text.
intAfter = intChr - CInt(lngECol - 1)
' Store characters to left of search text.

strLeft = Left$(strLine, intBefore)
' Store characters to right of search text.
strRight = Right$(strLine, intAfter)
' Construct string with replacement text.
strNewLine = strLeft & strNewText & strRight
' Replace original line.
mdl.ReplaceLine lngSLine, strNewLine
FindAndReplace = True
Else
MsgBox "Text not found."
FindAndReplace = False
End If

Exit_FindAndReplace:
Exit Function

Error_FindAndReplace:

MsgBox Err & ": " & Err.Description

FindAndReplace = False
Resume Exit_FindAndReplace
End Function

Die Funktion kannst Du ja für jedes Modul aufrufen.

Morli
13.06.2001, 13:31
Hallo Stema,

danke für Deinen Beitrag, aber das hatte ich auch schon gefunden. Problem ist, das ich dann auch jedes einzelne Modul, welches an ein Formular oder an einen Report gebunden ist, entsprechend aufrufen muß.

Eine Lösung vergleichbar mit der Menüvariant wäre mir wesentlich lieber!

Gruß

Rainer :)

Bernd Koch
13.06.2001, 17:33
Eine VBA-Lösung kann ich dir nicht bieten, es gibt allerdings von Hendrik Lindemann ein Suchen-und-Ersetzen-AddIn (MDE) als Freeware, das sowohl Klassenmodule als auch allgemeine Module durchsucht (nur Makros kann es nicht).

Wärest du daran interessiert, dann maile ich es dir.

Bernd

Morli
13.06.2001, 19:35
Hallo Bernd,

prinzipiell ja, aber eine VBA-Lösung wäre mir am liebsten. Heißt also, ran an den Speck und selbst was stricken.....!

Das Ganze soll dafür dienen, Namensänderungen von Tabellen und/oder Abfragen per Code in den Forms/Modulen/Kombi's/u.s.w. zu übernehmen.
Ziemlich heftig, aber was soll's, wird wohl viel Zeit in Anspruch nehmen!

Gruß

Rainer :)