Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
708to712
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
708to712
708to712
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Austausch von VBA-Code per VBA

Austausch von VBA-Code per VBA
22.12.2005 09:06:07
VBA-Code
Hallo Herber-Fans.
Kurz vor dem Fest stehe ich vor einem kleinen Problem:
Wie kann VBA-Code aus Excel per VBA gelöscht und neuer Code eingefügt werden?
Genauer:
Wir haben Projektreports, in denen VBA-Code enthalten ist. Dieser ist nun in allen Reports zu ändern. Die Lösung stelle ich mir so vor:
Einlesen eines Standard-Reports mitsamt VBA.
In einer Schleife alle vorhandenen Reports einlesen, den vorhandenen Code löschen und den Code aus dem Standard-Report einfügen.
Aus meiner Erinnerung heraus gibt es eine Möglichkeit. Ist aber schon mehrere Jahre her, dass ich wußte, wie das funktioniert.
Wer kann mir helfen.
Danke für die Antwort.
-Art

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Austausch von VBA-Code per VBA
22.12.2005 09:15:16
VBA-Code
Hallo Arthur,
habe das mal auf der Seite: www.schmittis-page.de gefunden
Zitat:
Ein hochinteressantes Thema: 'Makro ändert Makro'
Dieses Beispiel ändert eine Zeile im Code:
Const SuchZeile = " MsgBox ""VBA macht Spaß !"""
Const NeueZeile = " MsgBox ""VBA macht großen Spaß !"""

Sub VBAZeileÄndern()
Set VBE = Application.VBE.ActiveCodePane.CodeModule
With VBE
For x = 1 To .CountOfLines
If .Lines(x, 1) = NeueZeile Then
.ReplaceLine x, SuchZeile
Exit Sub
End If
If .Lines(x, 1) = SuchZeile Then
.ReplaceLine x, NeueZeile
Exit Sub
End If
Next x
End With
End Sub


Sub Testen()
MsgBox "VBA macht Spaß !"
End Sub

Gruß Dennis
Anzeige
AW: Austausch von VBA-Code per VBA
23.12.2005 09:13:04
VBA-Code
Dank zunächst an Dennis. Das VBE-Objekt hatte mir gefehlt.
Zunächst klappt der Zugriff auf den Code und den Code der meisten Blätter kann geändert werden... ...wäre da nicht der Fall, dass sich die Code-Namen von den Tabellenblattnamen unterschieden.
Herausgefunden habe ich, dass:
Im VBE-Objekt nur der Codename steht.
Im Workbook-Objekt sowohl der Codename, als auch der Tabellenname steht.
VBA-Module, Forms etc. kein Tabellenblatt besitzen.
Mein aktueller Ansatz ist, alle Code-Module zu durchlaufen.
In einer Schleife das Tabellenblatt der Quelldatei(so es existiert) zu dem Codemodul zu ermitteln.
In einer Schleife das Tabellenblatt der Zieldatei über den Codenamen auswählen.
Den Code kopieren.
Das sind viele Schleifen. Gibt es einen Weg direkt über das VBE-Objekt den Tabellenblattnamen zu erhaschen?
Gruß
-Art
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige