Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VB-Code automatisch suchen & ersetzen?

VB-Code automatisch suchen & ersetzen?
26.09.2006 10:06:28
Klaus Meier
Hallo allerseits,
ich habe diesmal ein neues, sehr außergewöhnliches Problem, bei dem ich Eure Hilfe benötige.
Kurz geschildert:
Ich möchte per Button (befindet sich auf einem geöffneten Excel-Blatt) in einer ungeöffneten Excel-Datei einen bestimmten VB-Codebereich suchen und ersetzen. Das soll alles automatisiert werden.
Vom Ablauf etwa so:
1. Button auf Stammblatt.xls drücken und dessen Macro startet
2. Datei Haus01.xls wird geöffnet
3. Sämtlicher VB-Code (in Arbeitsmappe/Tabelle/Modul) wird nach "Tag" durchsucht und durch "Nacht" ersetzt
5. MessageBox mit der Erfolgsmeldung (und evtl der Anzahl der geänderten Einträge)
4. Datei Haus01.xls wird gespeichert und geschlossen
5. Macro beendet
Eine Erweiterung des ganzen wäre, wenn die Datei "Haus01.xls" nicht sichtbar geöffnet werden würde. Ich muss das Abändern ja nicht sehen.
Geht dies alles überhaupt? Wäre für Hilfe sehr dankbar...
Klaus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VB-Code automatisch suchen & ersetzen?
26.09.2006 14:23:39
bst
Hi Klaus,
Versuch's als Ansatz mal so.
cu, Bernd
--
' **********************************************************************
' Modul: Modul5 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub x()
    Dim vb As Object
    Workbooks.Open "e:\test\source.xls"
    For Each vb In ActiveWorkbook.VBProject.VBComponents
        ChangeCode vb.codemodule, "Tag", "Nacht"
    Next
    ActiveWorkbook.Close True
End Sub

Sub ChangeCode(vb As Object, strAlt As String, strNeu As String)
    Dim i&, strOneLine$
    For i = 1 To vb.countoflines
        strOneLine = vb.Lines(i, 1)
        If InStr(strOneLine, strAlt) Then
            Debug.Print "ALT="; strOneLine
            vb.ReplaceLine i, Replace(strOneLine, strAlt, strNeu)
            Debug.Print "NEU="; vb.Lines(i, 1)
        End If
    Next
End Sub

Anzeige
AW: VB-Code automatisch suchen & ersetzen?
26.09.2006 15:47:44
Klaus Meier
Hallo Bernd,
vielen Dank soweit, das sieht schon mal sehr gut aus. Da kann ich schonmal mit arbeiten und das versuchen anzupassen.
Klaus
AW: VB-Code automatisch suchen & ersetzen?
26.09.2006 16:05:20
Klaus Meier
So weit so gut. Aber wie kann ich das Debug.Print durch eine MessageBox ersetzen, in der er einfach die Anzahl der Änderungern zählt? Zum Beispiel so: "Änderungen=15", die Box soll danach einfach mit "OK" geschlossen werden.
Das wäre nochmal wichtig für mich, danke...
AW: VB-Code automatisch suchen & ersetzen?
26.09.2006 16:11:36
bst
Hi,
z.B. so.
cu, Bernd
--
Option Explicit

Sub x()
    Dim vb As Object, lngCounter As Long
    
    lngCounter = 0
    Workbooks.Open "e:\test\source.xls"
    For Each vb In ActiveWorkbook.VBProject.VBComponents
        lngCounter = lngCounter + ChangeCode(vb.codemodule, "Tag", "Nacht")
    Next
    ActiveWorkbook.Close True
    MsgBox lngCounter, , "Änderungen"
End Sub

Function ChangeCode(vb As Object, strAlt As String, strNeu As String) As Long
    Dim i&, strOneLine$, lngI As Long
    
    lngI = 0
    For i = 1 To vb.countoflines
        strOneLine = vb.Lines(i, 1)
        If InStr(strOneLine, strAlt) Then
            vb.ReplaceLine i, Replace(strOneLine, strAlt, strNeu)
            lngI = lngI + 1
        End If
    Next
    ChangeCode = lngI
End Function




Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige