Geben Sie bei Verwendung von Application.FileDialog (msoFileDialogSaveAs) mit MSAccess das Feld "Speichern unter" an

8

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!

    
pec 14.10.2011, 15:36
quelle

4 Antworten

2

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;

%Vor%

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%     
Alex K. 14.10.2011, 16:39
quelle
6

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.

    
Dave Williams 15.04.2015 11:21
quelle
4

Wie Mike schrieb und von dem Link schlug er vor; Um den gewünschten Filter standardmäßig auszuwählen, können Sie:

%Vor%     
simpLE MAn 15.08.2013 19:12
quelle
0

Ссылка

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.

    
Mike Gardner 13.03.2013 13:11
quelle

Tags und Links