Registriert seit: 22.04.2016
Version(en): 2016
Hallo Community! Ich habe ein Tool welches mir die Datensätze als Excel-Datei exportiert. Um diese zu strukturieren und zu ordnen werden beim Öffnen der Datei durch das Event "Workbook_Open" einige Prozeduren durchlaufen. Ich möchte hierbei nun, dass nach der letzten Prozedur die Datei gespeichert wird und das Workbook_Open-Event nicht mehr stattfinden. Ich möchte nur nicht, dass das Workbook_Open gelöscht wird. Kann mir hierzu etwas empfehlen? Code: Sub Workbook_Open()
XXX YYY ZZZ End Sub
Beste Grüße
Registriert seit: 11.04.2014
Version(en): 2021
Hallo,
was willst du machen? Deine Beschreibung ist nicht verständlich - was heißt das, dass das Open-Event nicht mehr stattfinden soll? Erkläre deine gewollten Schritte doch bitte genauer!
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Registriert seit: 22.04.2016
Version(en): 2016
Es soll beim erstmaligen Öffnen der Datei nur das "Workbook_Open" durchlaufen. Nach dem Durchlaufen soll die Datei gespeichert werden und das Workbook_Open beim nächsten Öffnen nicht mehr gestartet werden.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo, Zitat:Nach dem Durchlaufen soll die Datei gespeichert werden und das Workbook_Open beim nächsten Öffnen nicht mehr gestartet werden. den Sinn oder Unsinn habe ich nicht richtig verstanden, aber wenn es denn so ist, daß ein im Workbook_Open Ereignis tatsächlich nur einmal ausgeführt werden soll, dann könnte man den Code nach einmaligem Durchlauf per Variable abschalten. Ich muß nicht begreifen, was für einen Sinn das machen soll, oder??? :16:
Registriert seit: 11.04.2014
Version(en): 2021
23.03.2017, 18:24
(Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2017, 18:38 von Glausius.)
Hallo,
also mir geht es wie dem Käpt'n.
Wenn es denn sein soll, dann baue in dein einmaliges Workbook_Open-Event folgendes ein:
1. Nach dem Durchlauf schreibst du einen Merkwert in eine versteckte Zelle deiner Datei (formatieren benutzerdefiniert mit ;;; ).
2. Vor das End Sub kommen folgende Befehle Application.DisplayAlerts = False Thisworkbook.Save
3. Als 2. Zeile des Workbook_Open-Events erfolgt die Abfrage des Merkwertes: If Range("deine Merkzelle") = 1 then Exit Sub wobei die Merkzelle vorher den Wert 0 zum Durchlaufen der Routine hatte
Viel Erfolg!
Gruß Günter aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
23.03.2017, 18:35
(Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2017, 18:36 von Käpt'n Blaubär.)
Hallo Günter,
vor lauter Nichtverstehen habe ich doch glatt vorausgesetzt, daß im Code
Sub Workbook_Open() XXX YYY ZZZ End Sub
die Speicherroutine bereits enthalten ist. :05:
Die Zeile mit den drei "Z" bietet sich doch dafür an
Registriert seit: 22.04.2016
Version(en): 2016
Hallo, danke für eure Beiträge.
Nein, Käptn Blaubär, Du musst es nicht verstehen, aber ich beschreibe es Dir gerne ausführlicher.
Ich erhalte Datensätze in einem Excel-Dokument. Diese müssen jedoch sortiert, strukturiert, geordnet, nummeriert werden. Zusätzlich müssen einige Berechnungen erfolgen. Dies ist alles initial. Am Ende erhalte ich einen Report, welchen ich als PDF-Datei exportiere.
Diese Datei mit all den Prozeduren gilt es Vorlage/ Template. D.h. der Anwender erhält durch ein Tool seine Datensätze in dieses Dokument. Wenn er dies öffnet, so passiert das oben beschriebene. Dies sollte jedoch nicht zweimal passieren, da sonst der ganze Report nicht mehr stimmt.
Ich dachte es gibt vielleicht eine elegantere Lösung, um als letzte Prozedur die Datei zu speichern und das Workbook zu resetten.
Danke
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo, Zitat:Ich dachte es gibt vielleicht eine elegantere Lösung, um als letzte Prozedur die Datei zu speichern und das Workbook zu resetten. tja, die könnte es mit einiger Sicherheit in der Tat geben. Das ist aber, zumindest was mich angeht, eine WENN ... DANN-Bedingung. WENN Du mir nämlich zeigst, was Du haben willst und schon hast ... bevorzugt wird eine Datei, damit man auch was zum Testen hat ... keine noch so schönen Bildchen, die geben zum Helfen nichts her, DANN schau ich mal, was mir dazu einfällt. Ich bin mir sicher, auch für den einen oder anderen der potentiellen Helfer hier ebenfalls sprechen/schreiben zu dürfen. Schau'n wir mal, dann seh'n wir schon
Registriert seit: 22.04.2016
Version(en): 2016
So, ich bin nun einen Schritt weiter. Mit folgedenem Code wird eine Zeile in das Workbook eingefügt: PHP-Code: For i = 1 To 26 ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule.InsertLines i, "'" Next
Leider wird nur eine Zeile eingefügt und nicht an den Zeilenanfang ein "'" gesetzt. Mit Deletelines kann ich das komplette Workbook_open löschen, würde es jedoch gerne temporär lagern
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi,
wenn das eine Vorlage ist, können doch beim Abspeichern der Datei dann einfach alle Makros entfernt werden durch abspeichern als xlsx. Das ändert doch nichts an der Vorlage.
Beachte: Vorlage hat als Dateiextension: *.xltm
|