Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1152to1156
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

ungewolltes Makro-ENDE nach Workbook.Close Befehl

ungewolltes Makro-ENDE nach Workbook.Close Befehl
Oberschlumpf
Hi Leute
Zur Zeit jagt bei mir ein Excel-Problem das nächste :-)
folgendes Szenario:
Datei1 (neue Makros, keine Daten)
öffnet
Datei2 (veraltete Makros, eingegebene Daten)
Datei1 wird mit Daten aus Datei2 aktualisiert
Datei2 wird wieder geschlossen
Datei2 wird gelöscht
Datei1 wird als Kopie mit Namen von Datei2 gespeichert
Datei2 wird geöffnet (mit EnableEvents = False)
Soll-Zustand in Datei2 für späteren Start durch User wird hergestellt
Datei2 wird gespeichert und geschlossen
----- jetzt kommt Problem -----
Datei2 wird geöffnet (mit EnableEvents = True)
- soll jetzt die "Makro-Kontrolle" übernehmen
Datei1 soll geschlossen und danach gelöscht werden
aber.....
Datei1 wird zwar geschlossen (Workbook("Datei1") False), aber jetzt hört das Makro einfach auf, weiter zu arbeiten - so als ob der End-Befehl ausgeführt wird (kein Fehler, keine Meldung, nix)
Es müsste nur noch der Kill-Befehl für Datei1 ausgeführt werden, was aber NICHT passiert - wieso nicht?
Szenario Ende
Kann es vielleicht sein, dass Datei1, weil in ihr das Makro gestartet wurde, sozusagen die "Mutter" ist, und wenn Datei1 geschlossen wird, dass das dann der Grund dafür ist, dass weitere Makros anderen Ursprungs NICHT ausgeführt werden - obwohl eigtl noch aktiv?
Wenn dem nicht so ist, kennt vielleicht jemand den Grund?
Und wenn doch, weiß jemand vielleicht eine Lösung, wie Datei1 nach Schließen gelöscht werden kann?
Sollte es notwendig sein, dass eine Bsp-Zip (mit Datei1+Datei2) benötigt wird, dann fragt einfach.
Danke schon mal für eure Gedanken, die ihr mir "leiht"....aber auch nur dann Danke, wenn ihr es wirklich tut ;-)
Ciao
Thorsten

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
vielleicht so, mit Application.OnTime
27.04.2010 07:36:20
Tino
Hallo,
gehe ich richtig in der Annahme Datei2 ist offen wenn Datei1 geschlossen ist und gelöscht werden soll?
Vieleicht ginge es mit ApplicationOnTime in der Datei1?
Eventuell könnte es so gehen.
kommt als Code in ein Modul von Datei2.xls
Option Explicit 
 
Sub KillDatei1() 
Dim strPath$ 
Dim oWB1 As Workbook 
strPath = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\") 
 
On Error Resume Next 
Set oWB1 = Workbooks("Datei1.xls") 
Do While Not oWB1 Is Nothing 
    DoEvents 
    Set oWB1 = Workbooks("Datei1.xls") 
Loop 
 
If Dir(strPath & "Datei1.xls") <> "" Then _
    Kill strPath & "Datei1.xls" 
 
If Err.Number <> 0 Then 
    MsgBox "Datei wurde gelöscht", vbInformation 
Else 
    MsgBox Err.Number & vbCr & vbCr & Err.Description, vbCritical, "Fehler" 
End If 
End Sub 
 
 
kommt als Code in DieseArbeitsmappe von Datei1.xls
Option Explicit 
 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Dim oWB2 As Workbook 
On Error Resume Next 
Set oWB2 = Workbooks("Datei2.xls") 
 
If Not oWB2 Is Nothing Then 
    Application.OnTime Now + TimeSerial(0, 0, 3), "Datei2.xls!KillDatei1" 
End If 
End Sub 
 
Gruß Tino
Anzeige
ist noch sehr Früh, ...
27.04.2010 07:40:14
Tino
Hallo,
Code im Modul besser so.
Sub KillDatei1()
Dim strPath$
Dim oWB1 As Workbook
strPath = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")

On Error Resume Next
Set oWB1 = Workbooks("Datei1.xls")
Do While Not oWB1 Is Nothing
    DoEvents
    Set oWB1 = Workbooks("Datei1.xls")
Loop
Err.Clear

If Dir(strPath & "Datei1.xls") <> "" Then _
    Kill strPath & "Datei1.xls"

If Err.Number = 0 Then
    MsgBox "Datei wurde gelöscht", vbInformation
Else
    MsgBox Err.Number & vbCr & vbCr & Err.Description, vbCritical, "Fehler"
End If
End Sub
Gruß Tino
Anzeige
AW: ist noch sehr Früh, ...aber du...
27.04.2010 07:55:08
Oberschlumpf
...bist trotdem schon seeeehr aktiv!! :-)
Hi Tino
Ich hatte nicht mal richtig Zeit, meine gerade gepostete Antwort korrektur zu lesen, da trudelt schon deine nächste Antwort ein :-)
Auch dafür danke!!
Ciao
Thorsten
mist + sorry Tino,...
27.04.2010 07:53:28
Oberschlumpf
...dass ich fast zeitgleich mit dir "meine" Lösung gefunden habe, da ich ja auch selbst weiter suchte, und du nun leider umsonst deine Zeit investiert hast.
Ich hatte hier noch nicht die Lösung gepostet, da ich sie selbst erst seit n paar Minuten weiß.
Hi Tino
Vielen Dank für deine Mühe!!!!
Gelöst habe ich mein Problem, in dem ich nicht mehr
Datei1 als Kopie mit dem Namen von Datei2 speicher
(ThisWorkbook.SaveCopyAs Datei2)
sondern ich versuchte es erfolgreich, in dem ich einfach
Datei1 direkt unter dem Namen von Datei2 speicher
(ThisWorkbook.SaveAs Datei2)
Somit werden mehrere Bedingungen gleichzeitig erfüllt.
- Datei1 (neue Makros, ohne Daten) wird automatisch Datei2 (zuvor alte Makros, eingegebene Daten, jetzt neue Makros und Daten)
- Datei1 ist ja durch Speichern unter anderem Namen "geschlossen" - so entfällt der .Close-Befehl
- Datei1 wird zu Datei2 und bleibt (nach meinem obigen Verständnis) bis zum Schluss "Mutter" aller Makros, und diese werden nun auch klaglos ausgeführt; auch das Löschen von Datei1
Trotzdem noch mal vielen Dank an dich!
Ciao
Thorsten
Anzeige
ok. kein Problem oT.
27.04.2010 07:57:25
Tino

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige