Hallo Dieter,
ich habe es nun zum Laufen gebracht und das Ersetzen funktioniert tadellos.
Allerdings musste ich die Zeile "If InStr(1, sFile, sLookFor, vbTextCompare) > 0 Then"
ersetzen. Die gab immer den Wert 0 zurück ?! Warum ist mir nicht klar.
Mit der expliziten Abfrage auf die Position geht es aber.
Nochmals vielen Dank für Deine Hilfe.
Rainer
Private Sub btnAbbrechen_Click()
Unload Me
End Sub
Private Sub btnChange_Click()
Dim sFile As String
Dim sPath As String
Dim sBuffer As String
Dim sLookFor As String
Dim sReplaceWith As String
Dim sPos As Long
' ------------------------------------------------------------------------
' Nach dieser Zeichenkette soll gesucht werden
' ------------------------------------------------------------------------
sLookFor = "Object = ""{2B7D38A0-4385-47BE-9345-29F96556FB3D}#1.0#0"";" & _
"""cmll17fx.ocx"""
' ------------------------------------------------------------------------
' Und das soll die neue Zeichenkette sein
' ------------------------------------------------------------------------
sReplaceWith = "Object = ""{2B7D38A0-4385-47BE-9345-29F96556FB3D}#1.0#0"";" & _
""" cmll22fx.ocx"""
'------------------------------------------------------------------------
' Hier den Pfad zu dem Verzeichnis angeben, in dem sich die FRM-Dateien
' des Projekts befinden
' -----------------------------------------------------------------------
sPath = "C:\CT_Frm\"
sFile = Dir$(sPath & "*.frm")
Do While Len(sFile) > 0
'--------------------------------------------------------------------
' Prüfen, ob in der Datei die gesuchte Zeichenkette vorhanden ist
' -------------------------------------------------------------------
sBuffer = ReadFile(sPath & sFile)
sPos = 0
pos = InStr(1, sBuffer, sLookFor, vbTextCompare)
If pos > 0 Then
' If InStr(1, sFile, sLookFor, vbTextCompare) > 0 Then
' ----------------------------------------------------------------
' Zeichenkette ersetzen
' ----------------------------------------------------------------
sBuffer = Replace(sBuffer, sLookFor, sReplaceWith, , , vbTextCompare)
WriteFile sPath & sFile, sBuffer
End If
sFile = Dir$
Loop
MsgBox "Dateien konvertiert"
End Sub
Private Function ReadFile(ByVal sFile As String) As String
Dim F As Integer
Dim sBuffer As String
F = FreeFile
Open sFile For Binary As #F
sBuffer = Space$(LOF(F))
Get #F, , sBuffer
Close #F
ReadFile = sBuffer
End Function
Private Sub WriteFile(ByVal sFile As String, ByVal sBuffer As String)
Dim F As Integer
F = FreeFile
Open sFile For Output As #F
Print #F, sBuffer;
Close #F
End Sub
Private Sub Form_Load()
End Sub |