Löschen von Sheet auf dem das Marcro läuft.

Bild

Betrifft: Löschen von Sheet auf dem das Marcro läuft.
von: Toby
Geschrieben am: 26.04.2005 10:56:08
Hallo,
ich hab folgendes Problem:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=(Paths & sFilename & ".xls"), FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Sheets("Reports").Select
ActiveWindow.SelectedSheets.Delete
ActiveWorkbook.Save
ActiveWorkbook.Close
Ich hab ewig gebraucht und bin jetzt draufgekommen wo der Fehler steckt.
Zuerst speichere ich die Datei ab. Danach wähle ich das Sheet "Reports". (Da steht auch das ganze VBA Zeugs drauf.
Danach lösche ich das Reports Sheet.
Dann soll er noch mal speichern und dann die Arbeitsmappe schließen.
Aber wenn ich das Sheet lösche dann führt es das nicht mehr aus und kommt mit nem Error.
Was kann man da machen?
Ich hoffe ihr versteht was ich meine.
Danke
Gruss Toby

Bild

Betrifft: AW: Löschen von Sheet auf dem das Marcro läuft.
von: Martin Beck
Geschrieben am: 26.04.2005 16:15:33
Hallo Toby,
was ist das für Code? Ereignisprozedur? "Normales" Makro? Letzteres sollte in einem Modul stehen und nicht im Klassenmodul der Tabelle.
Gruß
Martin Beck
Bild

Betrifft: AW: Löschen von Sheet auf dem das Marcro läuft.
von: Toby
Geschrieben am: 26.04.2005 16:23:22
Hallo,
Also! Ich habe ein Workbook mit 8 Sheets.
Ein Sheet (Reports) ist nur da um eine SQL Abfrage zu aktualisieren, ...
Das ganze Workbook soll ohne dieses Sheet in ein bestimmtes Verzeichnis (Abhängig vom Ergebnis des SQL-Querys) gespeichert werden.
Es handelt sich um Code der unter dem (Reports) Sheet geschrieben wurde:

Sub Button1_Click()
...
Pfad suchen, ...
Aktionen durchführen, ...
Alle anderes Sheets aktualisieren, ...
Und jetzt soll das Workbook gespeichert werden.
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=(Paths & sFilename & ".xls"), FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Dann soll das Reports Sheet gelöscht werden:
Sheets("Reports").Select
ActiveWindow.SelectedSheets.Delete
ActiveWorkbook.Save
ActiveWorkbook.Close
...
End Sub

Und hier ist das Problem! Ich kann zwar das Sheet löschen, doch dann führt er die letzten 2 Befehle nicht mehr aus!!! (Da das Reports-Sheet, welches den Code beinhaltet ja gelöscht wird!)
Wurde es jetzt klarer?
Danke nochmals
Gruss Toby
Bild

Betrifft: AW: Löschen von Sheet auf dem das Marcro läuft.
von: Martin Beck
Geschrieben am: 26.04.2005 16:51:30
Hallo Toby,
packe den Code in ein anderes Makro (z.B. MeinMakro), das in einem normalen Modul steht. Weise dem Button folgenden Code zu:

Sub Button1_Click()
Call MeinMakro
End Sub


Ich habe Dir mal ein Beispiel hochgeladen.
https://www.herber.de/bbs/user/21736.xls

Gruß
Martin Beck
Bild

Betrifft: AW: Löschen von Sheet auf dem das Marcro läuft.
von: Toby
Geschrieben am: 27.04.2005 15:50:41
Okay danke für den Tipp.
Funktioniert wunderbar.
Ich hab einfach das Löschen des Sheets ausgelagert.
Danach lass ich auch noch mal speichern.

Sub SaveAndDelete()
    Application.DisplayAlerts = False
    Sheets("Reports").Delete
    ActiveWorkbook.Save
    Application.DisplayAlerts = True
    ActiveWorkbook.Close
End Sub

Funktioniert wunderbar bis auf eines:
Wenn ich die Datei dann erneut öffne (auf mehreren Rechnern probiert) bekomm ich diese Fehlermeldung gleich nach dem / beim öffnen: *dumm*
Userbild
Hat da wer ne Idee???
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel-möglichkeit zahlen ergänzen?"