ich habe leider schon häufiger folgendes Problem gehabt, was ich bisher nur umschifft habe, aber nicht gelößt:
Um ein bestimmtes Worksheet einer Mappe, einzeln auf der Platte abzuspeichern, benutze ich:
Application.EnableEvents = False
ActiveSheet.Copy
pfad = pfad & arbeitsblatt & ".xls"
ActiveWorkbook.Close True, pfad
Application.EnableEvents = True
Soweit, so gut, das Dumme ist nur, in der zu kopierenden Seite, steht ein
Private Sub Worksheet_Activate()
und der läuft Bedingungslos, auf der Kopie an, obwohl
Application.EnableEvents = False
gesetzt ist.
In dem Originaldokument brauche ich den Worksheet_Activate, in der Kopie vergiftet er mir aber das Skript.
Mein erster Lösungsversuch war nun
Private Sub Worksheet_Activate()
If ActiveWorkbook.Name = "Test.xls" Then Test_Prozedur
End Sub
Dieser Versuch scheitert aber kläglich. Aufgrund dessen dass der Workbook Name des neuen Dokuments Book1.xls ist, wird der Aufruf nicht mehr ausgeführt, aber es kommt zum Fehler, da die Prozedur Test_Prozedur im Original auf Modul Ebene steht und somit in der Kopie garnicht vorhanden ist.
Warum Excel überhaupt die Überprüfung macht, wenn die Prozedur gar nicht angesprungen wird, ist mir auch ein ärgerliches Rätsel. Wie ich bei ersten Test meine gesehen zu haben, kommt es hier sogar zum Fehler, wenn man ein on error vorgeschaltet hat.
Gibt es einen Lösungsansatz hierfür?
- Könnte man verhindern, dass der VBCode mitkopiert wird? Kann man den VBCode im Zieldokument ändern? Übersehe ich was?
Gruß Eddie