Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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 bricht ohne Meldung ab

VBA bricht ohne Meldung ab
13.02.2015 10:30:52
MCO
Moin!
Ich öffne mit VBA eine weitere Mappe. In Auto-open wird die erste Mappe geschlossen.
Danach bricht die Routine ab, ohne ersichtlichen Grund oder Fehler.
Weiß jemand Rat?
Hier der code-Teil:

Sub Workbook_Open()
Dim makrolauf As Boolean
makrolauf = False
For Each wb In Workbooks
If wb.Name = "Netzplanauswertung KON.xlsm" Then
Application.EnableEvents = False
Workbooks("Netzplanauswertung KON.xlsm").Close 0 'Dies ist die letzte ausgeführte Zeile, _
dann Abbruch
makrolauf = True
Exit For
End If
Next wb
Gruß, MCO

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ist doch klar: Mappe zu - Makro beendet! oT
13.02.2015 10:36:34
JoWE

AW: Ist doch klar: Mappe zu - Makro beendet! oT
13.02.2015 10:40:40
MCO
Der Code läuft in der 2ten Mappe, sollte also die 1te Mappe schließen und weiterlaufen.
Warum sollte der Code abhängig von der 1. Mappe sein?
Erste Mappe: VBA code läuft durch, öffnte zweite Mappe
Zweite Mappe VBA code läuft automatisch an, schließt erste Mappe, bricht ab.
Gruß, MCO

Nö :-(
13.02.2015 10:48:21
MCO
noch offen

AW: Ist doch klar: Mappe zu - Makro beendet! oT
13.02.2015 10:51:27
Daniel
Hi
du irrst.
der Code der ersten Mappe läuft nicht bis zum Ende durch, sondern er startet und öffnet die zweite Mappe, dabei ist er immer noch am laufen.
Jetzt pausiert der Code der ersten Mappe, damit das Workbook-Open-Event der zweiten Mappe ausgeführt werden kann und danach sollte eigentlich der Code der ersten Mappe weiter laufen.
du aber schließt im Code der zweiten Mappe die erste und "killst" dabei ein Makro, das eigentlich noch am Laufen ist und nur auf "StandBy" steht.
sowas mag VBA halt nicht und reagiert etwas verschnupft mit einem Abbruch.
Gruß Daniel

Anzeige
AW: Ist doch klar: Mappe zu - Makro beendet! oT
13.02.2015 11:06:48
mumpel
Hallo!
Du hast "Exit For" im Code. Also steigt das Makro anweisungsgemäß aus sobald eine Mappe mit dem angegebenen Namen gefunden wurde.
Gruß, René

AW: Ist doch klar: Mappe zu - Makro beendet! oT
13.02.2015 15:19:40
MCO
Bis dahin kommt der Code nicht.
Es ist schon wohl so, dass der Code mit dem killen der Mappe1 abbricht, und zwar vollständig.
Gruß, MCO

AW: VBA bricht ohne Meldung ab
13.02.2015 11:01:58
Rudi
Hallo,
Schließe doch die aufrufende Mappe im Aufrufcode.
Sub aa()
workbooks.open "c:\test\test.xlsm"
thisworkbook.close false
End Sub
Gruß
Rudi

AW: VBA bricht ohne Meldung ab
13.02.2015 15:24:24
MCO
Hallo Rudi!
Die Mappe nur aufzurufen führt mich nicht zum Ziel.
Ich möchte erreichen, dass das Open-Ereignis ausgelöst wird oder angestossen, und die Mappe 1 geschlossen wird.
Ich muß also den ersten code im Grunde erst zuende laufen lassen, und dann irgendwie den Zweiten laufen lassen. Dafür fällt mir aber erst mal keine Lösung ein.
Gruß, MCO

Anzeige
AW: VBA bricht ohne Meldung ab
13.02.2015 15:43:13
Daniel
Hi
wenn das Makro läuft, darfst du die Mappe1 erst schließen, wenn das Makro durchgelaufen ist.
dh das Workbook-Open-Event der Mappe2 darf die Mappe1 nicht beenden, wenn in der Mappe1 noch ein Makro läuft.!
das kannst du im Prinzip so absichern.
- Schreibe, wenn das Makro in er Mappe1 läuft in eine Zelle der Mappe1 eine Meldung. (das kann das Makro selber machen)
- öffne dann wie gehabt per Makro die Mappe2
- Frage im OpenEvent der Mappe2 diese Zelle ab und prüfe so, ob das Makro der Mappe1 am laufen ist. Wenn ja, schließe die Mappe1 nicht, wenn nein, schließe die Mappe1
- Schließe die Mappe1 am Ende des Makros, welches die Mappe2 geöffnet hat, lösche vor einem eventuellen Speichern die Zelle mit der Makrokennung.
Das wäre dann ein sauberer Ablauf.
Gruß Daniel

Anzeige
Weiß ja nicht, worüber hier diskutiert wird, ...
13.02.2015 19:01:07
Luc:-?
…Folks,
denn es ist doch so einiges unklar und MCOs Erläuterungen sind wenig hilfreich, zumal der Wb_Open-TeilCode derartige Schlussfolgerungen gar nicht hergibt. Daraus ergeben sich doch die folgenden Fragen:
1. In welcher Mappe steht diese EventProc?
2. Was wird damit bezweckt?
So, wie es für mich aussieht, wird gezielt oder zufällig die Mappe geöffnet, die diese EventProc hat. Das bewirkt, dass alle anderen bereits geöffneten Mappen mit NamensVgl durchlaufen wdn. Ist der positiv, wird diese Mappe ohne Speichern geschlossen. Da zuvor EreignisReaktion abgestellt wurde, kann das Schließen dieser Mappe auch keine neuerliche EreignisReaktion auslösen. Ein Absturz kann also nur erfolgen, wenn die geschlossene Mappe diejenige ist, die diese Prozedur enthält. Diese Info kann ich aber in dieser Frage nirgends entdecken! Im Code auch nicht, dass irgendeine Mappe neu geöffnet wird; sie müsste ja schon geöffnet sein!
Folglich gibt der gepostete ProzTeil das, was bisher vermutet wurde gar nicht her, so dass das alles, hierauf bezogen, rein spekulativ ist und von Szenarien ausgeht, die gar nicht zutreffen müssen.
MCO sollte erstmal die beiden o.g. Fragen beantworten. Ansonsten müsste, wenn man wirklich alle Mappen, zB eines Verzeichnisses, öffnend durchlaufen wollte, das auch dargestellt wdn. Insofern hat Rudi völlig recht, wenn er dieses Pgm in eine normale Prozedur verlagern will, denn mir erschließt sich der Sinn nicht, das mit einer Wb_Open-Proz tun zu wollen. Hier wäre allenfalls ein entsprd Ereignis der Application sinnvoll.
Deshalb halte ich die ganze UrsachenDiskussion für spekulativ und letztlich überflüssig, das gezeigte Pgm aber schlicht für eine ablauftechnische Fehlkonstruktion und zwar schon von der zugrunde liegenden Überlegung her. Mehr gibt das Gezeigte nebst gegebener Info auch nicht her.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
weitere Erläuterung...
16.02.2015 07:45:16
MCO
Hallo Luc!
Erstmal danke für deine Fleißarbeit zu dem Problem.
Die Schlußfolgerungen der Diskussionsteilnehmer sind durchaus richtig, aber schwarz auf weiß ist all das sicher besser dokumentiert. Schön, wenn solche Fragen auch mal klar formuliert sind, ohne dem Gegenüber völlige Unwissenheit, sondern allenfalls gefährliches Halbwissen zu unterstellen.
Zu 1
Der beschriebene Code-Teil steht in Mappe 2
Zu 2
Im weiteren Verlauf des Makros folgt eine ja/nein-Abfrage, die die Ausführung bestätigt.
Sollte die Mappe 2 durch einen Aufruf aus "Netzplanauswertung KON.xlsm" aufgerufen werden, soll die "Netzplanauswertung KON.xlsm" geschlossen und diese Abfrage sofort bestätigt werden, ohne Rückfrage.
If IsNumeric(Application.Match(UName, ArNamen, 0)) And makrolauf = False Then Makro = MsgBox(" _
Makro starten?", vbQuestion + vbYesNo, "Makro")
If Makro = vbYes Or makrolauf = True Then
Makrostartet .....
Gruß, MCO

Anzeige
AW: VBA bricht ohne Meldung ab
14.02.2015 14:06:26
daniel
Hi
Probieren mal folgendes
- schreibe den Close-Befehl in ein eigenes Makro in einem allgemeinen Modul
- rufe im WorkbookOpen-Event dann dieses Makro mit Application.OnTime Now, "Makroname" auf.
Makros, die mit Application.Ontime aufgerufen werden starten erst, wenn die laufenden Prozesse abgeschlossen sind. Somit vermeidest du dann den Konflikt.
Gruß Daniel

Danke schön...
16.02.2015 08:03:40
MCO
Im Einzelsatzdurchlauf funktioniert es zwar nicht ("Der Code kann im Haltemodus nicht ausgeführt werden") aber im normalen Durchlauf erreiche ich das gewünschte Ergebnis.
Danke nochmal. Schon wieder was gelernt. :-)
Gruß, MCO
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige