Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
576to580
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
576to580
576to580
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aktionen beim Öffnen einer beliebigen Datei

Aktionen beim Öffnen einer beliebigen Datei
02.03.2005 10:17:56
Stefan
Hallo Excelperten,
ich möchte beim Öffnen einer beliebigen Datei ein Scipt prüfen lassen, ob diese Datei von mir ist und wenn ja, dann gewisse Anpassungen vornehmen lassen (Fußzeilen aktualisieren,...).
Um nicht in jede Mappe Makros einzufügen, denke ich über ein Add-In nach. Aber wie prüfe ich, ob gerade eine Mappe geöffnet wurde? Insbesondere müsste das Öffnen über den Windows-Explorer abgefragt werden können.
Geht das überhaupt ?
Danke für Eure Hilfe.
Stefan.

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktionen beim Öffnen einer beliebigen Datei
02.03.2005 12:33:06
Bert
Kennst du dich mit Klassenmodulen aus? Das geht nur damit z.B. in deiner PERSONL.XLS
Da stehen die Ereignisse
Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
zur Verfügung.
Bert
AW: Aktionen beim Öffnen einer beliebigen Datei
02.03.2005 12:55:16
Heiko
Hallo Stefan,
habe diesen link zum Thema gefunden,
http://www.mrexcel.com/archive2/40000/46338.htm
Den Code darin habe ich mir ein bisschen angepaßt und dann in meine PERSONL.xls geschrieben. Nun wird jedes öffnen (und schliessen) einer Datei erkannt. Man könnte das dann so erweitern das die Aktionen ausgeführt werden die du haben möchtetst.
Achtung, nenne dein Klassen modul Class1.
Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
AW: Aktionen beim Öffnen einer beliebigen Datei
02.03.2005 13:13:32
Jörg
Hallo Stefan, Hallo Heiko (Danke für den Hinweis!),
Das scheint wirklich ein ähnliches Problem zu sein wie bei mir.
Nun sind meine VBA Kenntnisse nicht so gut.
@Heiko: Welchen Code meinst Du bei deinem Link?
Die personl.xls wird dann immer mit geöffnet und muss auch wieder geschlossen werden?
Wäre dann ein AddIn nicht besser?
Gruß Jörg.
AW: Aktionen beim Öffnen einer beliebigen Datei
02.03.2005 13:31:01
Stefan
Danke Bert, Danke Heiko.
Mit so schneller Antwort hatte ich gar nich gerechnet.
Der Frage von Jörg bezüglich des Add-Ins möchte ich mich anschließen.
Die Personl.xls hat m.E. den Nachteil, dass die nicht so einfach für mehrere Nutzer synchronisiert werden kann und bei der Script-Programmierung immer als geöffnete Datei beachtet werden muss.
Oder sehe ich das falsch ?
Gruß
Stefan
Anzeige
AW: Aktionen beim Öffnen einer beliebigen Datei
02.03.2005 15:50:10
Heiko
Hallo Stefan,
deine erste Frage lautete
" ich möchte beim Öffnen einer beliebigen Datei ein Scipt prüfen lassen, ob diese Datei von mir ist und wenn ja, dann gewisse Anpassungen vornehmen lassen (Fußzeilen aktualisieren,...). "
Wenn dies auf jedem Rechner gehen soll, dann mußt du auf jedem Rechner ein AddIn installieren oder die entsprechende PERSONAL.xls anpassen. Empfinde ich als sehr aufwendig, wie willst du sicherstellen das auf allen Rechner auf denen dann mal deine Dateien geöffnet werden, das AddIn drauf ist.
Wenn das auf Dateien zutreffen soll die du mit deinem Rechner öffnest dann sollte es mit folgendem Code in deiner PERSONAL.xls gehen.
Denn die PERSONAL.xls wird immer zuerst geladen, wenn sie von dir erstellt wurde und sie ist solange offen wie du EXCEL geöffnet hast.
Folgenden Code dann in deine PERSONAL.xls.
In ein Klassenmodul mit dem Namen "Klasse1".
Option Explicit
Public WithEvents App As Application

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
MsgBox "Datei " & Wb.Name & " wurde geöffnet!", vbInformation
End Sub


Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook)
MsgBox "Datei " & Wb.Name & " wurde geschlossen!", vbInformation
End Sub

Dies in ein allgemeines Modul.
Option Explicit
Dim X As New Klasse1
Sub InitializeApp()
' Called by Workbook_Open
Set X.App = Application
End Sub
Dies in DieseArbeitsmappe.
Option Explicit

Private Sub Workbook_Open()
Call InitializeApp
End Sub

Probiere es doch mal aus, bei mir wird nun jedes öffnen und schliessen einer Arbeitsmappe angezeigt. Denn Code kann man dann ja so anpassen das man bei den BuiltinDocumentProperties den Author abfragt und entsprechend handelt.
Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
AW: Aktionen beim Öffnen einer beliebigen Datei
03.03.2005 07:12:51
Jörg
Hallo Heiko,
ich habe das mal bei mir getestet, und es funktioniert, so wie Du es beschreibst.
Interessant ist, dass beim Öffnen einer anderen Datei als der personal.xls erst die personal.xls wieder geschlossen wird, und dann die meldung kommt, dass die andere geöffnet wird.
Wenn ich die msgboxen weglasse, müßte das ja im hintetrgrund passieren, so dass am ende tatsächlich die richtige datei auf ihren namen hin geprüft werden kann.
sollte klappen. Vielen dank.
gruß Jörg.
Achtung !!! personl.xls statt Personal.xls.
03.03.2005 07:40:09
Heiko
Moin Jörg,
was ich nicht ganz verstehe bei dir ist der Hinweis:
"Interessant ist, dass beim Öffnen einer anderen Datei als der personal.xls erst die personal.xls wieder geschlossen wird, und dann die meldung kommt, dass die andere geöffnet wird."
Aber ich glaube, unseren Fehler erkannt zu haben.
Ich habe immer von Persoal.xls geschrieben, meine natürlich die Personl.xls die sogenannte persönliche Arbeitsmappe von EXCEL.
Wenn du da den Code reinschreibst, brauchst du dir um das starten der Mappe keine Gedanken mehr zu machen, die Personl.xls wird von EXCEL immer zuerst und automatisch beim starten von EXCEL mit geöffnet.
Wenn du im VBA Fenster keine Personl.xls siehst kannst du dir so eine erstellen.
Extras - Makro - Makro aufzeichnen
und unter Speicherort "Persönliche Arbeitsmappe" wählst.
Schreibt nun irgendein Makro auf, wirklich nur einmal Makrorekorder an irgendwo auf Blatt klicken und Makrorekorder wieder aus.
Nun siehst du im VBA Fenster hoffentlich die oft erwähnte Personl.xls. Im Modul1 ist der Code den du gerade aufgezeichnest hast. Den kannst du löschen und unseren Code darein packen, dann abspeichern EXCEL einmal neu starten und du wirst begeistert sein, na hoffentlich :-)
Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
AW: Achtung !!! personl.xls statt Personal.xls.
03.03.2005 07:54:32
Jörg
Hallo Heiko,
wir schreiben jetzt nur noch hier, okay?
Also, ich habe das alles so gemacht, und Du hast natürlich recht. Jetzt merke ich das Starten und Schließen der personl.xls nicht mehr.
Trotzdem funktioniert die If-Anweisung noch nicht.
Hier nochmal der Code im Klassemodul1:
Option Explicit
Public WithEvents App As Application

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
If Wb.Name = "MeineDatei.xls" Then MsgBox "Sie ist es" Else MsgBox "Datei " & Wb.Name & " wurde geöffnet!", vbInformation
End Sub


Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook)
MsgBox "Datei " & Wb.Name & " wurde geschlossen!", vbInformation
End Sub

Springt Dir doch bestimmt sofort ins Auge, oder :-)
Gruß Jörg.
Anzeige
AW: Achtung !!! personl.xls statt Personal.xls.
03.03.2005 08:06:14
Heiko
Is noch früh,
aber wenn du nun die Personl angelegt hast dann ersetze den ganzen Code im Klassenmodul mit dem folgendem. Den das WorkbookActivate Ereignis reagiert auf aktivieren und das WorkbookOpen nur auf das öffnen der Datei!
Option Explicit
Public WithEvents App As Application

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
If UCase(Wb.Name) = UCase("MeineDatei.xls") Then
MsgBox "Sie ist es"
Else
' Verhindert die Meldung bei öffnen der Personl.xls
If UCase(Wb.Name) <> UCase("Personl.xls") Then
MsgBox "Datei " & Wb.Name & " wurde geöffnet!", vbInformation
End If
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
Morgenstund hat Gold im Mund
03.03.2005 08:15:23
Jörg
Super Heiko,
jetzt scheint wirklich alles zu klappen.
Dann mache ich mich mal weiter ans Werk.
Der Rest sind einfache Formatierungsarbeiten per Makro, das sollte ich hinbekommen.
Vielen Dank, Gruß Jörg.
AW: Achtung !!! personl.xls statt Personal.xls.
03.03.2005 08:26:50
Stefan
Hallo Heiko,
vielen Dank für Deine Beiträge. Ich habe Eure Diskussion nachvollzogen, allerdings bin ich nicht immer so schnell im Antwort-Mailen.
Bei mir funktioniert es auch. Allerdings habe ich zwei unschöne Effekte:
(1) Wenn Dateien über Scripte geöffnet werden, dann erhalte ich ebenfalls die Meldung.
(2) Wenn ich neue Dateien anlege, dann erhalte ich keine Meldung.
Vielleicht hast Du ja dafür auch eine schnelle Lösung.
Danke.
Stefan.
Anzeige
AW: Achtung !!! personl.xls statt Personal.xls.
03.03.2005 09:00:07
Heiko
Hallo Stefan,
zu 1.
Vor dem öffnen per makro die Application Events abschalten. Aber Achtung dieser Befehl schaltet auch gleich die Nachfrage Makros aktivieren mit ab und die Makros werden aktiviert.

Application.EnableEvents = False
Workbooks.Open Application.GetOpenFilename
Application.EnableEvents = True
zu 2.
zusätzlich ins Klassenmodul.

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
MsgBox "Es wurde eine neue Mappe mit dem Namen   " & Wb.Name & "   angelegt!"
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
AW: Achtung !!! personl.xls statt Personal.xls.
03.03.2005 08:49:34
Stefan
Hallo Heiko,
hier zwei Fragen:
(1) Wenn ich eine zweite Excel-Sitzung öffne, erhalte ich die Meldung, dass die Personl.xls durch den Beutzer ... (mich) gesperrt ist und ob ich diese schreibgeschützt öffnen möchte. Wie verhindere ich dies?
(2) In Deinem Code hast Du die "Set X.App = Application" in Modul1 gesetzt. Warum ruft man diesen Befehl nicht gleich in diese Arbeitsmappe auf?
Gruß Stefan.
AW: Achtung !!! personl.xls statt Personal.xls.
03.03.2005 09:08:21
Heiko
Zu 1.
Warum öffnet du EXCEL zweimal ?! Um das zu umgehen müsstest du mit AddIns arbeiten. Soll Abhilfe schaffen, habe ich aber noch nicht getestet.
Zu 2.
Teste doch mal ob das alles auch in DieseArbeitsmappe geht, in entsprechender Literatur wird es jedenfalls oft so wie gezeigt gemacht.
Und nun fröhliches selbst probieren.
Gruß Heiko
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige