Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Workbook_open nach Ablauf speichern und sperren
#1
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
Antworten Top
#2
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!
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#3
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.
Antworten Top
#4
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:
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#5
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!
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#6
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
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#7
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
Antworten Top
#8
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
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#9
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
Antworten Top
#10
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste