Ich habe überall nach einem Weg gesucht, dies zu tun.
Ich möchte ein Dialogfeld "Speichern unter" öffnen, damit der Benutzer den Speicherort zum Speichern einer Datei auswählen kann. Aber, Ich möchte das "Save as type" -Feld voreinstellen mit "comma separated value File (* .csv)"
Das Problem ist, dass die "Filter" -Methode nicht mit "msoFileDialogSaveAs" zu funktionieren scheint. Kann der Dateityp mit "Application.FileDialog (msoFileDialogSaveAs)" voreingestellt werden?
Wenn ich im Moment die Datei mit der Erweiterung .csv speichere und sie dann in Excel öffne, bekomme ich " Die Datei, die du öffnen willst, xxx.csv hat ein anderes Format als das, das von Dateierweiterung ... "Nachricht. Die Datei funktioniert jedoch korrekt.
%Vor%als Sie!
Wie bereits erwähnt, wird FileDialog
help states msoFileDialogSaveAs
nicht unterstützt.
Sie können eine CSV-Erweiterung in FileName
erzwingen, wenn der Dialog entladen wird;
Wenn Excel Ihre CSV nicht mag, prüfen Sie, ob es Werte gibt, die Sie angeben müssen, um Zeilenumbrüche zu umgehen / "(http://stackoverflow.com/questions/566052/can-you-encode-cr-lf- in-in-csv-Dateien)
Und anstelle dieses Musters;
%Vor%Sie können;
%Vor%Spät wie immer, aber hoffentlich eine bessere Lösung ...
%Vor%Wie funktioniert es?
Wie Sie wissen, können Sie nicht Filter direkt auf msoFileDialogSaveAs setzen. Wenn Sie jedoch InitialFileName auf "* .ext" setzen, wird diese Erweiterung erzwungen. Der Filter sagt immer noch "Alle Dateien", aber es zeigt keine Dateien an, wenn sie nicht die von Ihnen angegebene Erweiterung haben.
Das Ergebnis
Wenn Sie "* .ext" löschen und einfach "test" schreiben, lautet der resultierende Dateiname "test.ext", also wird diese Erweiterung tatsächlich erzwungen.
Es ist nicht perfekt, aber es ist sehr einfach und erzielt das gewünschte Ergebnis, ohne auf API-Aufrufe für weniger Erfahrene mit Code zurückzugreifen.
Vorbehalte
Dies funktioniert nur für eine einzelne Erweiterung zu einer Zeit, z. "* .csv". Wenn Sie mehrere Erweiterungen filtern müssen, z. Bilder dann müssen Sie auf API-Aufrufe zurückgreifen.
Wie Mike schrieb und von dem Link schlug er vor; Um den gewünschten Filter standardmäßig auszuwählen, können Sie:
%Vor%Verwenden Sie filterindex, um die gewünschte Erweiterung aus der Standardliste auszuwählen (starten Sie das Dialogfeld und zählen Sie die Liste auf Ihre Erweiterung herunter), oder ändern Sie die saveas Filtersammlung wie auf der Seite unter msdn dokumentiert. Die Filter können nicht innerhalb der filialialog-Instanz geändert werden, vorher nur mit einem filialialogfilters-Objekt über Application.FileDialog (msoFileDialogSaveAs) .Filters. Sie sind dann innerhalb der Instanz verfügbar.
Tags und Links vba ms-access-2007