Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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
Inhaltsverzeichnis

Application.FileDialog-Eigenschaften

Application.FileDialog-Eigenschaften
28.04.2017 22:15:21
Barbaraa
Hallo
Wenn ich
with Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False oder True, je Wunsch
ein zweites Mal ausführe, ist die Einstellung für .AllowMultiSelect die des vorigen Aufrufs.
Warum ist das so? FileDialog ist doch ein Objekt, das jedes Mal neu erstellt wird.
Wie lange bleibt diese Einstellung erhalten? Über die Sitzung hinaus? Oder gibt es nur ein einziges Objekt dieser Art?
Und noch eine Frage in diesem Zusammenhang:
In der Hilfe lese ich bei "Chdir" vom "aktuellen Verzeichnis", das ich wechseln kann. Worauf bezieht sich das "aktuell"? Was ändert sich nach "chdir"?
LG, Barbara

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.FileDialog-Eigenschaften
29.04.2017 19:35:11
Zwenn
Hallo Barbaraa,
du hast die Methode Application.FileDialog() mit dem Parameter msoFileDialogFilePicker gewählt. Also Application.FileDialog(msoFileDialogFilePicker). Ich habe dieses Konstrukt bisher nicht verwendet. Wenn ich unter folgendem Link nachesehe, wundere ich mich auch, dass Du überhaupt eine Möglichkeit gefunden hast, mehrere Dateien 'in einem Rutsch' auszuwählen. Es ist lediglich eine Möglichkeit genannt eine Datei auszuwählen.
https://msdn.microsoft.com/de-de/library/office/ff836226.aspx
Meine direkte Antwort bzw. Frage auf Dein Problem wäre gewesen: 'Bist Du sicher, dass Du ein zweites Objekt erzeugt hast, dem Du die multible Auswahl zuweist?'
Nun denke ich aber, Dir ist mehr geholfen, wenn ich Dich auf die Methode Application.GetOpenFilename() hinweise. Zwar habe ich bisher nie versucht erst nur eine und dann mehrere Dateien darüber auszuwählen. Aber ich weiß, dass es mit der Auswahl mehrerer über den Parameter MultiSelect funktioniert.
https://msdn.microsoft.com/de-de/library/office/ff834966.aspx
Abgesehen davon kannst man auch mit der Setzung von MultiSelect lediglich eine einzige Datei auswählen ;-)
Viele Grüße,
Zwenn
Anzeige
Noch zu Chdir
29.04.2017 19:51:28
Zwenn
Nochmal ich,
weil ich im ersten Posting nicht dran gedacht habe auch auf diese Frage einzugehen
Chdir steht für change directory, also dem Wechsel des Verzeichnisses. Aktuell bedeutet also einfach nur das Verzeichnis, in dem Du Dich grade befindest. Den Parameter chdir kannst Du allein ja auch gar nicht alleine verwenden. Du musst dahinter ein Verzeichnis angeben, in das du wecheseln willst. Von daher gesehen ändert sich nach einem Verzeichniswechsel halt einfach das Verzeichnis, von dem aus Du für andere Dateien agierst.
Viele Grüße,
Zwenn
AW: Noch zu Chdir
29.04.2017 20:48:44
Barbaraa
Hallo Zwenn
erst mal zu Chdir:
Ich habe beobachtet, dass
Application.GetOpenFilename("PDF Files , *.pdf")
den Ordner C:\Users\Barbara\Documents anzeigt. Warum gerade diesen? Ist das der "aktuelle ordner", in dem ich mich gerade befinde? Die aktuelle Excel-Datei ist jedenfalls in einem anderen Ordner.
Erst nach
Chdir ThisWorkbook.Path
zeigt GetOpenFilename den Ordner der Excel-Datei an.
In diesem Zusammenhang verstehe ich Deine Erklärung
"Aktuell bedeutet also einfach nur das Verzeichnis, in dem Du Dich grade befindest."
nicht.
In welchem Verzeichnis befinde ich mich zu Beginn?
Was bedeutet es, das Verzeichnis zu wechseln?
LG, Barbara
Anzeige
AW: Noch zu Chdir
29.04.2017 21:25:24
Zwenn
Schön, dass Du noch online bist.
Sofern zuvor explizit kein Verzeichnis ausgewählt wurde (was zu Beginn des Excel Aufrufs nach meinem Wissen auch nicht möglich ist), wird das Standardverzeichnis des Btriebssystems gewählt. Das ist das Document Verzeichnis, im User Verzeichnis. Dein User-Name ist also Barbara. Das ist der Name, unter dem Dein Windows Benutzername angelegt wurde. Ganz spezifisch hast Du den ganzen Pfad ja angegeben: C:\Users\Barbara\Documents
Das ist also einfach nur das Ausgangs-Verzeichnis, unter dem das Betriebssystem eine Datei speichern möchte, die es bisher nicht kannte. Das hat mit der aktuell geöffnten (Excel) Datei erstmal gar nix zu tun. Der Ort, das Verzeichnis, wo diese liegt, spielt einfach keine Rolle. Windows geht immer zunächst mal vom Standard-User-Verzeichnis aus. Die Frage wäre ja sonst: Wo soll die Datei, die bisher nie gespeichert wurde, denn nun gespeichert werden?
Insofern ist 'das aktuele Verzeichnis' wirklich genau dieser.
In dem Moment, in dem Du dem Makro sagst Chdir ThisWorkbook.Path wechselst Du in das Verzeichnis, in dem die Excel-Datei liegt, in der sich auch Dein Makro befindet.
Das Verzeichnis zu wechseln sollte nach der vorhergehenden Erklärung eigentlich klar sein. Da eigentlich immer eine Einschränkung darstellt ... Frag ruhig nach :-)
Vile Grüße,
Zwenn
Anzeige
AW: Noch zu Chdir
29.04.2017 22:40:18
Barbaraa
Gut, verstehe. Habe mein Vokabular erweitert mit "Aktuelles Verzeichnis". DANKE
Auch "Application.FileDialog.InitialFileName" ändert den aktuellen Pfad.
Nun habe ich aber ein Problem mit Application.GetOpenFilename.
In meinem Beispiel soll die Zelle mit dem Namen "WW_Datei" den gewählten Pfad und Dateinamen bekommen. Falls der Dialog abgebrochen wurde, soll diese Zelle so bleiben, wie sie ist.
Das Makro soll auf einem deutschen und auf einem englischen Excel laufen.
Hier mein Beispiel mit Application.FileDialog:
Private Sub Dialog()
With Application.FileDialog(msoFileDialogFilePicker)
.Filters.Clear
.Filters.Add "PDF", "*.pdf"
.AllowMultiSelect = False
.InitialFileName = ThisWorkbook.Path
If .Show = False Then Exit Sub
Range("WW_Datei") = .SelectedItems(1)
End With
End Sub
Das geht.
Aber mit Folgendem habe ich ein Problem:
Private Sub Filename()
Dim a As String
ChDir ThisWorkbook.Path
a = Application.GetOpenFilename("PDF (*.pdf), *.pdf")
'was soll da stehen
Range("WW_Datei") = a
End Sub
Wie soll ich die Zelle "WW_Datei" beschreiben? Bei Abbruch kommt "Falsch" raus, was aber im Englischen wahrscheinlich nicht so ist. Brauche ich da jetzt für jede mögliche Sprache eine individuelle Abfrage?
Und: Was ist nun besser (oder schlechter) an GetOpenFilename?
Noch was (nur, falls es von Bedeutung ist): Du hast von der Methode Application.FileDialog() geschrieben. Im beigefügten Link steht aber Application.FileDialog-Eigenschaft (Excel).
Danke für Deine fachkundige Hilfe.
LG, Barbara
Anzeige
AW: Wert Dateiauswahl-Dialog prüfen
30.04.2017 04:41:00
fcs
Hallo Barbara,
du musst die Variable (hier a), die den Rückgabewert des Dialoges übernimmt als Variant deklarieren.
Dann kannst du die Variablen unabhängig von der Spracheinstellung prüfen.
Entweder auf Typename oder auf Wert.
LG
Franz
Private Sub Filename()
Dim a As Variant
ChDir ThisWorkbook.Path
a = Application.GetOpenFilename("PDF (*.pdf), *.pdf")
'was soll da stehen
If VBA.TypeName(a) = "Boolean" Then Exit Sub
Range("WW_Datei") = a
End Sub
Private Sub Filename()
Dim a As Variant
ChDir ThisWorkbook.Path
a = Application.GetOpenFilename("PDF (*.pdf), *.pdf")
'was soll da stehen
If a = False Then Exit Sub
Range("WW_Datei") = a
End Sub

Anzeige
AW: Wert Dateiauswahl-Dialog prüfen
01.05.2017 00:29:43
Barbaraa
Sicher, a als string deklarieren, war mein Fehler.
Danke für Dein Beispiel, Franz.
Bleibt noch die Frage offen:
Was ist nun besser (oder schlechter) an GetOpenFilename im Vergleich mit FileDialog?
FileDialog(...) oder GetOpenFilename,
02.05.2017 10:36:56
EtoPHG
Hallo Barbara,
Die Frage ist nicht "Was ist nun besser (oder schlechter)".
Grundsätzlich empfiehlt Microsoft ab Windows-Vista den Einsatz der API-Funktion GetOpenFilename anstelle von internen Filedialogen von Applikationen.
Zu der Frage, warum die Einstellungen von Filedialog die Einstellung behält: Das ist grundsätzlich mit vielen, bzw. den meisten, Dialog Objekten der Applikation (Excel) der Fall. Die Hilfe ist darum nicht ganz klar, wenn sie sagt "Es sich um eine Instanz des Dialogs"... Es ist nicht eine Instanz (oder bessere Instanzierung) des Objekts, sondern es ist die Instanz, bzw. das an die Appplikation gebundene Objekt selbst.
Gruess Hansueli
Anzeige
AW: FileDialog(...) oder GetOpenFilename,
02.05.2017 18:07:09
Barbaraa
Hi Hansueli
gut, dann werde ich diese Überlegungen mit einbeziehen.
Deine anschaulichen Erläuterungen verstehe ich und habe (zumindest bis zum Absenden dieser Nachricht) keine weiteren Fragen.
Danke Dir und den anderen Unterstützern, für Eure Antworten und Hilfen.
LG, Barbara

19 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige