Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
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
Inhaltsverzeichnis

VBA Code ersetzen

VBA Code ersetzen
Heinz
Hallo Forum,
Hab schöne Tutorials zum Code manipulieren von Nepumuk gefunden. Den Teil 8 hab ich als für mein Projekt am geeignetsten empfunden und sogleich ausprobiert UND: Es funktioniert! Allerdings nicht immer Ich bekomme an irgendeiner (bei jedem Einzelschritt-Test an einer anderen) Stelle einen Excel-Absturz...
Was ich will: Ein Add-In soll den Code aus einem seiner eigenen (Tabellen-)Objekte in bestimmte Tabellenobjekte der aktiven Mappe kopieren. Diese Tabellenobjekt-Namen beginnen alle mit MA.. Dazu habe ich deinen code in eine Schleife gepackt und noch eine Bedingung drangeschrieben, damit nur die Tabellenobjekte, die mit MA anfangen durchsucht werden.. Wie gesagt, manchmal klappt es und manchmal nicht - dann endets mit einem Absturz.
Danke für die Hilfe - Heinz
Hier mal mein Code:
Public Sub WA_Lohn()
Dim VBObj As Object, NewCode As Object
Set Wb = ActiveWorkbook
' 1 Ersetzen des gesamten Code-Textes in allen worksheet-Objekten 
Set NewCode = Application.VBE.VBProjects("FormUPD").VBComponents("NewCode_WALohn").CodeModule
For Each VBObj In Wb.VBProject.VBComponents
If VBObj.Type = vbext_ct_Document And InStr(VBObj.Name, "MA") = 1 Then
With VBObj.CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, NewCode.Lines(1, NewCode.CountOfLines)
End With
End If
Next VBObj
End Sub

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

Betreff
Benutzer
Anzeige
AW: VBA Code ersetzen
13.05.2010 12:04:30
fcs
Hallo Heinz,
im Prinzip funktioniert die Prozedur. Ich hab allerdings keinen Absturz erlebt. Der einzig merkwürdige Effekt war, dass manchmal die Selektion von Zellen nach der Ausführung blockiert war. Aber auch das war nicht reproduzierbar.
Evtl. solltest du während der Codeaktualisierungen noch die Berechnung auf manuell setzen und die Ereignismakros deaktivieren.
Weitere Probleme könnten bereiten:
- Virenscanner - manche könnten solche xla-Dateien als suspekt einstufen.
- automatisches Speichern der Datei durch Excel - kolliert manchmal mit anderen Aktivitäten.
Gruß
Franz
Public Sub WA_Lohn()
Dim VBObj As Object, NewCode As Object, Wb As Workbook, StatusCalc As Long
Set Wb = ActiveWorkbook
With Application
.EnableEvents = False
StatusCalc = .Calculation
If StatusCalc  xlCalculationManual Then .Calculation = xlCalculationManual
End With
' 1 Ersetzen des gesamten Code-Textes in allen worksheet-Objekten
Set NewCode = Application.VBE.VBProjects("FormUPD").VBComponents("NewCode_WALohn").CodeModule
For Each VBObj In Wb.VBProject.VBComponents
If VBObj.Type = vbext_ct_Document And InStr(VBObj.Name, "MA") = 1 Then
With VBObj.CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, NewCode.Lines(1, NewCode.CountOfLines)
End With
End If
Next VBObj
With Application
.EnableEvents = True
If StatusCalc  xlCalculationManual Then .Calculation = StatusCalc
End With
End Sub

Anzeige
AW: VBA Code ersetzen
17.05.2010 15:23:46
Heinz
Hallo Franz,
Danke schonmal dafür! Habs eingebaut und macht auch Sinn. Verhindert aber den Absturz nicht :-( Ich kanns aber inzwischen etwas präzisieren: Excel spuckt Fehler 440 = Automatisierungsfehler aus und mein AV-Programm meldet Buffer Overflow durch Excel.
Ich habe 2 verschiedene, aber sehr ähnliche Arbeitsmappen, an denen ich per VBA Änderungen vornehmen will (inkl. Code austauschen). Am Ende soll die Mappe jeweils gespeichert und geschlossen werden. Und da passiert der Absturz, nach dem Wiederherstellen ist aber alles passiert, was passieren soll. Bei der Einen funktionierts auch reibungslos. Nur bei der Anderen eben nicht. Irgendwas verträgt sich da nicht. Wie bekomme ich so einen Fehler definiert?
Danke und Gruß Heinz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige