Excel-Arbeitsmappe Open Event-Makro wird nicht immer ausgeführt

8

Ich habe ein Workbook_Open-Ereignismakro (und es ist in ThisWorkbook), das nicht immer ausgeführt wird.

  • Wenn Excel geschlossen ist und ich auf die .xls-Datei im Windows Explorer doppelklicke, wird sie ausgeführt.
  • Wenn ich Excel über Start / Programme (ohne .xls-Datei) starte und dann die Datei öffne, wird sie ausgeführt.
  • Wenn ich die Datei bereits in Excel geöffnet habe, aber die Datei schließe (Excel geöffnet lassen) und sie erneut öffne, wird das Makro nicht ausgeführt.

Ich habe die Sicherheit auf "Mittel" eingestellt und aktiviere Makros, wenn es geöffnet wird.

Was muss ich tun, damit das Makro ausgeführt wird, wenn ich es öffne, nicht nur beim ersten Mal für diese Excel-Sitzung?

(übrigens, das ist Excel 2003)

    
ScottSM 25.03.2011, 21:56
quelle

11 Antworten

4

Ich dachte, das wäre der überzeugendste Artikel zu diesem Problem (das ist ein seit langem bestehender, nie erklärter, völlig unberechenbarer Fehler, den Excel ausstellt). (toter Link)

Kurz gesagt, es ist in vielen Fällen eine Timing-Sache, die verursacht wird, weil die Arbeitsmappe versucht, Sachen zu berechnen, wenn sie geöffnet wird und das dem Workbook_Open-Ereignis im Weg steht. Die Art und Weise zu testen, ob es für diese Situation ist, besteht darin, zuerst alle von Zellen aufgerufenen UDFs oder Makros umzubenennen, so dass sie nicht aufgerufen werden und sehen, ob sich irgendetwas ändert.

    
Lance Roberts 25.03.2011 22:47
quelle
2

Ich habe das gleiche Problem erlebt.

Ich habe eine Arbeitsmappe ohne Probleme auf meinem Computer getestet. Nach der Verteilung an meine Kunden wurde mir gesagt, dass einige Combo-Boxen leer blieben. Diese werden normalerweise innerhalb der Routine workbook_open gefüllt. Ich habe verschiedene Dinge ausprobiert, um das workbook_open -Event zu aktivieren - ohne Erfolg.

Schließlich fand ich, dass die Deaktivierung aller benutzerdefinierten Funktionen (UDF) zur korrekten Ausführung von workbook_open führte.

Da meine Arbeitsmappe aus einer anderen Datei geöffnet wird, werde ich versuchen, zuerst die Berechnung auf manuell zu setzen und dann workbook_open manuell auszuführen. Dies kann durch Definition von

geschehen %Vor%

statt

%Vor%

Seltsam, dass Excel das nicht selbst misst ...

    
DrMarbuse 12.09.2014 12:11
quelle
2

Eine späte Antwort (besser als keine).

Ich hatte dieses Problem jetzt ein paar Mal (mit Excel 2010). Die Lösung, die (bisher) immer funktioniert hat, war: Entfernen Sie bedingte Formatierung, insbesondere wenn sie UDF als Bedingungen enthält. Wie @LanceRoberts in einem obigen Beitrag geschrieben hat, liegt es letztlich daran, dass UDF-Berechnungen das Open-Ereignis "überschreiben", aber ich habe festgestellt, dass diese besonders schädlich sind, wenn sie in bedingten Formaten verwendet werden.

    
Rob 19.02.2015 13:00
quelle
2

Ich habe fast identisches Verhalten festgestellt und festgestellt, dass dies auf einen Fehler zurückzuführen ist, der auftritt, wenn bedingte Formatierungsregeln fehlschlagen. Es stellt sich heraus, dass, wenn die Regeln für die bedingte Formatierung auf irgendeiner Einstellung durch die Makros basieren und die bedingte Formatierung zu einem Fehler führt, der Makro Workbook_Open nicht einmal versucht, zu laufen.

Zum Testen erstellen Sie eine Kopie Ihrer Datei und löschen Sie alle bedingten Formatierungen aus der Arbeitsmappe. Speichern und erneut öffnen. Wenn das Problem dadurch behoben wird, müssen Sie die bedingten Formatierungsregeln so anpassen, dass sie nicht mehr von Funktionen / Werten abhängen, die vor dem Ausführen des Workbook_Open-Makros unterbrochen werden.

    
Ira Burton 10.11.2016 17:46
quelle
0

Einige Vorschläge:

  1. Versuchen Sie, die Arbeitsmappe mit einem digitalen Zertifikat zu signieren. Fügen Sie dieses Zertifikat dem Speicher vertrauenswürdiger Zertifikate hinzu und versuchen Sie es erneut.
  2. Wenn dies maschinenspezifisch ist, versuchen Sie Office erneut zu installieren.

Stellen Sie sicher, dass Sie die neuesten Service Packs installiert haben.

    
bvukas 26.03.2011 11:56
quelle
0

Ich habe das gleiche Problem festgestellt und vermeide es, die Sicherheitseinstellungen zu verwenden. Ich benutze die Optionen Einstellungen dann Vertraulichkeitszentrum, dann "Params of Disability Center" (Entschuldigung, aber es ist eine Übersetzung der französischen Version: -p) dann "Dateien approved" oder so ähnlich. Und fügen Sie die Datei hinzu, die die Excel-Arbeitsmappe enthält. Und es funktionierte danach.

Sah überall hin und fand diese Lösung nie.

Ich hoffe, es wird jemandem helfen

    
Flymann 24.09.2015 10:30
quelle
0

Hatte das gleiche Problem und ich denke, ich habe es. Ich musste ein Workbook_BeforeClose private Sub an Stelle setzen, das die Arbeitsmappe speicherte, wenn es nicht nur gelesen wurde; und eine Workbook_BeforeSave, die sichergestellt hat, dass Application.EnableEvents = True ist. Dies scheint zu ermöglichen, dass das Workbook_Open ausgelöst wird. Nicht 100% sicher warum , aber scheint wiederholbar, einschließlich in einer leeren neuen Arbeitsmappe.

    
Steve Fossey 12.05.2016 18:18
quelle
0

Dies passiert, wenn eine Arbeitsmappe geschlossen wird und Application.EnableEvents auf false gesetzt wird. Anschließend öffnen Sie eine andere Arbeitsmappe in derselben excel-Instanz. Um dies zu vermeiden, stellen Sie sicher, dass alle Prozesse, die Ereignisse deaktivieren, vor dem Beenden wieder aktiviert werden können. Besonderes Augenmerk auf "End" -Befehle, Fehlerbehandler und "Exit Sub" -Sätze in der Mitte Ihres Programms.

    
Arturo Llano 28.03.2017 02:22
quelle
0

Was bewirkt, dass Ihr anderes Archiv, das Sie zuerst geöffnet haben, eine Workbook_Open Prozedur hat; Excel führt es nicht ein zweites Mal aus.

    
user8222516 27.06.2017 19:57
quelle
0

Das ist mir auch passiert und hat Stunden gebraucht, um das herauszufinden.

Stellt sich heraus, dass die Funktion HEUTE () in Excel das Problem verursacht hat. Einmal aus meinem Arbeitsblatt gelöscht, hat alles wieder funktioniert. Sehr seltsamer Fehler.

    
George French 02.08.2017 15:04
quelle
0

Hinzufügen zum Arturo Llano-Beitrag: Der folgende Code wurde zum Überwachen des Workbook_Open-Ereignisses und zum Ausführen von ProcessX verwendet, wenn eine Arbeitsmappe geöffnet wurde.

ProcessX enthielt eine End-Anweisung. Das Ergebnis war, dass es nur das erste Mal funktioniert hat. Das Ende löschte AppX, so dass keine weiteren Ereignisse beobachtet werden konnten. Durch das Entfernen von End wurde das Problem behoben. (Die Verwendung von End ist sowieso eine schlechte Übung, da es alles stoppt, ohne irgendeine Art von Säuberung oder Beendigung anderer Ressourcen).

'Code in: Persönliches.xlsb ThisWorkbook

%Vor%     
Five Nine 03.02.2018 15:12
quelle

Tags und Links