VBA: Makro mit Öffnen-Dialog verknüpfen

Hallo,

ich hab ein kleines Problem mit Excel 2002:
Ich möchte im standardmäßigen Öffnen-Dialog die Dateifilter anpassen. Zwar kann ich per VBA den Öffnen-Dialog anpassen, aber das Problem ist, dass ich eine Prozedur bräuchte, die immer aufgerufen wird, bevor der Öffnen-Dialog erscheint.
In Word habe ich schon herausgefunden, wie es geht:

Sub DateiÖffnen()
Dim FD As FileDialog
Set FD = Application.FileDialog(msoFileDialogOpen)
With FD
.Filters.Add „Word- und Textdateien“, „*.doc,*.txt“, 1
.Show
End With
End Sub

Erstaunlich finde ich, dass eine Prozedur „DateiÖffnen“ als quasi-Ereignisprozedur funktioniert. Jetzt bräuchte ich noch das Pendant in Excel.

Irgendwelche Ideen?

VG
Wolfgang

Hallo Wolfgang.

In Word habe ich schon herausgefunden, wie es geht:

Sub DateiÖffnen()
Dim FD As FileDialog
Set FD = Application.FileDialog(msoFileDialogOpen)
With FD
.Filters.Add „Word- und Textdateien“, „*.doc,*.txt“, 1
.Show
End With
End Sub

Erstaunlich finde ich, dass eine Prozedur „DateiÖffnen“ als
quasi-Ereignisprozedur funktioniert. Jetzt bräuchte ich noch
das Pendant in Excel.

Ich weiß nicht, ob ich Dich richtig verstehe, denn in Excel funktioniert das doch eigentlich genauso.
Momentan leider noch großes Fragezeichen. Bitte beschreibe 'mal genauer.

VG
Carsten

Vielleicht hab ich mich etwas unverständlich ausgedrückt.

Das Makro an sich funktioniert schon. Nur wird es nicht automatisch aufgerufen, wenn ich in Excel auf den „Öffnen“-Button drücke bzw. im Menü Datei->Öffnen wähle. Ich denke, dass ich die Prozedur falsch benannt habe.

In Word funktioniert die Prozedur „Sub DateiÖffnen“ wie eine Art Ereignisprozedur, die automatisch aufgerufen wird, wenn ich eine neue Datei öffnen will.

Jetzt frage ich mich, wie ich diese Prozedur in Excel benennen muss, damit sie automatisch aufgerufen wird.

Ich hoffe, das war jetzt verständlicher.

Hallo Wolfgang.

Das Makro an sich funktioniert schon. Nur wird es nicht
automatisch aufgerufen, wenn ich in Excel auf den
„Öffnen“-Button drücke bzw. im Menü Datei->Öffnen wähle. Ich
denke, dass ich die Prozedur falsch benannt habe.

In Word funktioniert die Prozedur „Sub DateiÖffnen“ wie eine
Art Ereignisprozedur, die automatisch aufgerufen wird, wenn
ich eine neue Datei öffnen will.

Jetzt frage ich mich, wie ich diese Prozedur in Excel benennen
muss, damit sie automatisch aufgerufen wird.

Ich hoffe, das war jetzt verständlicher.

Meine Vermutung ist, daß sowohl das Menü Öffnen, als auch der Öffnen-Button in der Symbolleiste möglicherweise durch andere, gleichaussehende ersetzt wurden. Das ist nicht ganz so schwierig. Von irgendwo muß ja die Prozedur ihren Aufruf herbekommen und ersetzte Buttons sind im Moment für mich die plausibelste Erklärung.
Mir ist nicht bekannt, ob in VBA eigene Ereignisse erstellt werden können, und ob es sich eventuell bei Deiner Prozedur um ein solches handelt, aber da könnte ich sowieso nicht helfen.

Markiere doch mal in Word den Namen der Prozedur, klicke im Menü „Bearbeiten“ auf „Suchen“ und wähle dann bei „Suchen in“ die Option „aktuellem Projekt“.
Eigentlich müßtest Du dann da landen, wo die Prozedur aufgerufen wird oder steht dort eventuell etwas wie .OnAction = „DateiÖffnen“ ?

VG
Carsten

Hallo Carsten,

danke für den Hinweis mit den ausgetauschten Buttons. Das löst mein Problem in Excel. Dort habe ich einfach dem Button und dem Menü-Eintrag mein Makro zugewiesen. Klappt prima. Da hätte ich auch selbst draufkommen können *schäm*.

Ich bin mir sicher, dass ich in Word weder den Menü-Eintrag noch den Öffnen-Button verändert habe. Den Tipp mit dem Prozedurnamen habe ich übrigens aus dem Internet
(http://www.pcwelt.de/start/software_os/tipps_tricks/…)
Deswegen bin ich mir ziemlich sicher, dass diese Prozedur standardmäßig (ohne irgendwelche sonstigen Änderungen an Word) aufgerufen wird. Du kannst es ja mal ausprobieren. Würde mich interessieren, ob es klappt.

Grüße
Wolfgang

Deswegen bin ich mir ziemlich sicher, dass diese Prozedur
standardmäßig (ohne irgendwelche sonstigen Änderungen an Word)
aufgerufen wird. Du kannst es ja mal ausprobieren. Würde mich
interessieren, ob es klappt.

Hallo Wolfgang,

so wie es scheint kommt DateiÖffnen aus WordBasic, in Vba nimmt man Documents.Open

Aus der Vba-Hilfe zu Word97:

http://www.bilder-space.de/show.php?file=21.06ukY9n3…

Gruß
Reinhard

Ich hab nochmal ein bisschen mit einer jungfräulichen Normal.dot experimentiert:

  1. Die Prozedur namens „DateiÖffnen“ erstellt
  2. „Öffnen“-Button gedrückt -> Prozedur „DateiÖffnen“ wird nicht aufgerufen.
  3. Word geschlossen und nochmal neu gestartet.
  4. „Öffnen“-Button gedrückt -> Prozedur „DateiÖffnen“ wird automatisch aufgerufen.
  5. Prozedur umbenannt
  6. Öffnen-Button gedrückt -> Fehlermeldung „Sub oder Funktion nicht definiert“
  7. Öffnen-Button erneut gedrückt -> Datei-Öffnen-Dialog erscheint ganz normal (ohne meine selbst-definierten Filter).

Es scheint, als wäre der Öffnen-Button beim Schließen bzw. Öffnen der Normal.dot automatisch mit der Prozedur verknüpft worden.

Mir scheint dieses Verhalten ähnlich der ganzen Auto-Prozeduren (AutoOpen, AutoExec etc, bzw FileSave). In der Hilfe gibt es dazu ja keine Angaben. Gibt es denn im www irgendwo eine Auflistung dieser Prozeduren. Vielleicht findet sich dort ja auch „DateiÖffnen“.

Gruß
Wolfgang