VBA - Unterschied msoFileDialogFilePicker msoFileDialogOpen

Moderator: ModerationP

VBA - Unterschied msoFileDialogFilePicker msoFileDialogOpen

Beitragvon Proma » 13. Sep 2021, 15:06

Hallo liebe Experten,

mit dem FileDialog bietet Excel eine bequeme Möglichkeit, um Pfade und Dateien auszuwählen, letztere auch zum Speichern auszuwählen. Den Unterschied machen die MsoFileDialog-Konstanten msoFileDialogFolderPicker, msoFileDialogFilePicker, msoFileDialogOpen, msoFileDialogSaveAs.

Mein Problem ist, dass ich nicht erkennen kann, worin der Sinn liegt, für das Auswählen einer Datei einen anderen Dialog bereitzustellen als für das Öffnen einer Datei oder für das Auswählen eines Pfades und für das Speichern einer Datei. In diesen Fällen geschieht doch das selbe: Eine Datei wird ausgewählt, um sie zu öffnen (das kann ich mit msoFileDialogFilePicker genauso gut machen, denn um das Öffnen der Datei muss ich mich dann ohnehin selber kümmern) bzw. kann ich einen Pfad zum Speichern einer Datei doch ebenso gut mit dem msoFileDialogFolderPicker auswählen (denn auch das Speichern nimmt mir die DialogBox nicht ab).

Auch .ButtonName (was meiner unmaßgeblichen Meinung nach doch eigentlich .ButtonCaption heißen müsste, oder?), gibt mir Rätsel auf: Die Beschriftung wird erst dann übernommen, wenn man ein Objekt (Pfad / Datei) markiert hat.

Der einzige Unterschied zwischen msoFileDialogFilePicker und msoFileDialogOpen, der mir aufgefallen ist, ist die Beschriftung des Buttons; und wenn .ButtonName ein bisschen anders funktionieren würde, dann bräuchte man die beiden Konstanten msoFileDialogOpen und msoFileDialogSaveAs überhaupt nicht. Oder sehe ich das falsch?

Meine Ausstattung:
Windows 10, Office 2010

Vielen Dank vorab für Eure Unterstützung und
liebe Grüße
vom Martin
Proma
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 594
Registriert: 08. Sep 2015, 11:43

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon Nepumuk » 13. Sep 2021, 15:59

Hallo Martin,

bei msoFileDialogOpen und msoFileDialogSaveAs gibt es die .Execute-Methode um die Datei direkt zu öffnen bzw. zu speichern.
De fontibus non est disputandum

Gruß
Nepumuk 8-)
Benutzeravatar
Nepumuk
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 15212
Registriert: 10. Aug 2004, 08:40
Wohnort: Regensburg

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon Proma » 14. Sep 2021, 16:50

Hallo Nepumuk,

herzlichen Dank für den Hinweis, da werde ich mich gleich mal drüber machen!

Für die etwas verspätete Antwort bitte ich um Nachsicht - ich war arg im Stress und bin erst jetzt dazugekommen, die Antworten im Forum anzuschauen. Umso mehr freue ich mich über diesen Ansatz, von dem ich mir viel verspreche!

Vielen Dank nochmal und liebe Grüße
vom Martin
Proma
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 594
Registriert: 08. Sep 2015, 11:43

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon Proma » 15. Sep 2021, 12:16

Hallo nochmal,

die .Execute-Methode funktioniert einwandfrei aber leider nur bei Excel-Dateien, was jedoch nicht weiter verwundert, weil halt der FileDialog ein Excel-Objekt ist. Schade. Ansonsten kann man ihn recht kommod z.B. auch aus Word oder Outlook aufrufen in dieser Weise:
Code: Alles auswählen
  With Excel.Application.FileDialog(msoFileDialogOpen)

Dann setze ich ihn halt nur noch als FilePicker / FolderPicker ein. Oder gibt's vielleicht doch noch Alternativen?

Vielen Dank einstweilen und liebe Grüße
vom Martin
Proma
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 594
Registriert: 08. Sep 2015, 11:43

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon DerHoepp » 15. Sep 2021, 13:18

Hallo Martin,

in Excel-VBA gibt es noch Application.GetOpenFileName() Und mit der ShellExecute-Funktion aus der API kannst du Dateien direkt mit dem zugeordneten Programm öffnen:
Code: Alles auswählen
Option Explicit

Private Declare Function ShellExecuteA Lib "shell32.dll" _
    (ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long
   
Sub testeDasMal()
    Dim fname As String
    fname = Application.GetOpenFilename()
    ShellExecuteA 0&, "OPEN", fname, vbNullString, vbNullString, 3
End Sub

Wählst du dabei beispielsweise eine Word-Datei auf, wird die Datei mit Word geöffnet (oder mit OOO, je nachdem, wie du es in deinem Dateisystem eingestellt hast).

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9724
Registriert: 14. Mai 2013, 11:08

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon Proma » 15. Sep 2021, 16:41

Hallo DerHoepp,

danke für Deine Nachricht und den Code!
Was soll ich sagen - funktioniert prächtig (hab's auch gar nicht anders erwartet)! :P
Wenn ich den Code außerhalb von Excel laufen lasse, muss ich nur die Zeile...
Code: Alles auswählen
    fname = Application.GetOpenFilename()
...ersetzen durch die Zeile
Code: Alles auswählen
    fname = Excel.Application.GetOpenFilename()
Und schon läuft der Code auch z.B. in Outlook-VBA!

Ich bin begeistert!

Vielen Dank nochmal und liebe Grüße
vom Martin
Proma
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 594
Registriert: 08. Sep 2015, 11:43

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon DerHoepp » 16. Sep 2021, 08:39

Hallo noch einmal,

wenn du in einem anderen Office-Programm arbeitest, solltest du vielleicht doch lieber den FileDialog verwenden, als msoFileDialogPicker sollte der in allen Office-Applications vorhanden sein.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9724
Registriert: 14. Mai 2013, 11:08

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon Proma » 18. Sep 2021, 11:34

Hallo DerHöpp,

vielen Dank für Deinen Hinweis!
Diese Funktion war mir bislang nicht geläufig, ich werde sie aber künftig genussvoll verwenden - man muss sich ja nicht ohne Not mit der linken Hand am rechten Ohr kratzen. :P

Und schon wieder muss ich mich für meine verspätete Antwort entschuldigen; diesmal lag's aber nicht am Stress sondern einfach daran, dass ich schon nicht mehr mit weiteren Beiträgen gerechnet und den Thread als abgeschlossen betrachtet hatte. Umso größer die freudige Überraschung!

Nochmals herzlichen Dank für die Erweiterung meines VBA-Horizontes und schönes Wochenende
vom Martin
Proma
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 594
Registriert: 08. Sep 2015, 11:43

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon Proma » 18. Sep 2021, 12:41

Hallo DerHöpp,

zu früh gefreut - der Aufruf aus den anderen Office-Anwendungen scheint (allgmein oder nur bei mir?) nicht zu funktionieren.
Beim Versuch, den FileDialog aus Outlook heraus (ohne Verweis auf Excel) aufzurufen, erhalte ich in der Zeile...
Code: Alles auswählen
With Application.FileDialog(msoFileDialogFilePicker)

...die Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht".
Bei einem Aufruf in der Form...
Code: Alles auswählen
With Excel.Application.FileDialog(msoFileDialogFilePicker)

...funktioniert es dagegen problemlos.

Hab' ich da etwas missverstanden oder liegt es einfach an meiner Office-Version (Office 2010)?
Vielen Dank und liebe Grüße
vom Martin
Proma
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 594
Registriert: 08. Sep 2015, 11:43

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon 1Matthias » 18. Sep 2021, 14:09

Moin!
Nein, liegt nicht an deiner Version oder dir. Warum auch immer kann man im Outlook den Filedialog nur mit Verweis auf eine andere Officeanwendung (excel, word) starten. Wenn du danach suchst, findest du etliche Einträge, die dann ebenso wie du mit Excel als Applicationursprung arbeiten.
VG
1Matthias
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 963
Registriert: 15. Aug 2017, 18:36

Re: VBA - Unterschied msoFileDialogFilePicker msoFileDialogO

Beitragvon Proma » 19. Sep 2021, 07:27

Hallo 1Matthias,

vielen Dank für die klärenden Worte, jetzt fühle ich mich rehabilitiert! :P
(Obwohl es mir lieber gewesen wäre, der Fehler hätte bei mir gelegen; dann hätte ich das ändern können!)

Vielen Dank nochmal, schönen Sonntag und liebe Grüße
vom Martin
Proma
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 594
Registriert: 08. Sep 2015, 11:43


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: DerHoepp, HKindler und 29 Gäste