Hallo zusammen bei wewewa,
hatte das erst unter Tabellenkalkulation gepostet, ich Dummerchen …
schlag mich mal wieder mit EXCEL herum und raffs nicht.
Ich möchte aus einem bestehenden Workbook Code in ein anderes
Workbook schreiben, der Code soll dort den „Worksheet_Change“
eines Sheets abfangen.
Den nötigen Code habe ich in einer var codestring gespeichert,
und der tuts auch. Grundsätzlich funzt das Schreiben, aber
unter Umständen möchte EXCEL sich gerne bei MS melden, wegen
des Fehlerberichtes halt. Also EXCEL-Totalabsturz!
actWorkbook ist das zu ändernde Workbook und toChangeSheet ist
das zu ändernde Sheet.
If actWorkbook.VBProject.Protection = vbext\_pp\_locked Then
MsgBox "VBA-Project is protected! Can´t change
it!", vbOKOnly
Else
If
actWorkbook.VBProject.VBComponents(toChangeSheet.CodeName).CodeModule
Is Nothing Then
actWorkbook.VBProject.VBComponents(toChangeSheet.CodeName).CodeModule.AddFromString
("")
End If
With
actWorkbook.VBProject.VBComponents(toChangeSheet.CodeName).CodeModule
If .Find(" Worksheet\_Change(", 1, 1, -1, -1)
Then
'StartLine =
.ProcBodyLine("Worksheet\_Change", vbext\_pk\_Proc)
'startStr = Replace(.Lines(StartLine, 1),
"Worksheet\_Change(", "Worksheet\_Change\_old(")
'.ReplaceLine StartLine, startStr
'.AddFromString (codestring)
MsgBox "Existing sub ""Worksheet\_Change""
could not be replaced!", vbOKOnly
Else
.AddFromString (codestring)
End If
End With
End If
Was muss alles passen, damit das .AddFromString „immer“
erfolgreich ist?
Die auskommentierten Fragmente sollten den etwa schon
vorhandenen Code löschen, klappt aber noch weniger… Ich
habe den Eindruck, dass der Eventhandler nicht zur Laufzeit
verändert werden darf. Hat da vileicht jemand Erfahrung?
mfg ein leicht frustierter
Dirk.Pegasus