Preset “enregistrer sous le type” terrain lors de l'utilisation de l'Application.FileDialog(msoFileDialogSaveAs) avec MSAccess
J'ai cherché partout pour une façon de le faire.
Je veux ouvrir une boîte de dialogue Enregistrer sous afin que l'utilisateur peut choisir l'emplacement de sauvegarde d'un fichier. Mais, je veux le "Save as type" champ preset "séparation par virgule de la valeur du Fichier (*.csv)"
Le problème, c'est le "Filtre" methode ne semble pas fonctionner avec "msoFileDialogSaveAs". Est-il possible de préréglage du type de fichier à l'aide de l'Application".FileDialog(msoFileDialogSaveAs)"?
Pour le moment, si j'ai enregistrer le fichier avec l' .extension csv et ensuite de l'ouvrir dans excel, j'ai le "Le fichier que vous essayez d'ouvrir xxx.csv est un format différent de celui spécifié par l'extension du fichier ..." message. Le fichier fonctionne correctement.
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "xxx"
.AllowMultiSelect = False
.InitialFileName = "xxx.csv"
'.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
result = .Show
If (result <> 0) Then
' create file
FileName = Trim(.SelectedItems.Item(1))
fnum = FreeFile
Open FileName For Output As fnum
' Write the csv data from form record set
For Each fld In rs.Fields
str = str & fld.Name & ", "
Next
' Write header line
str = Left(str, Len(str) - 2) ' remove last semi colon and space
Print #fnum, str
str = ""
' Write each row of data
rs.MoveFirst
Do While Not rs.EOF
For i = 0 To 40
str = str & rs(i) & ", " ' write each field seperated by a semi colon
Next i
str = Left(str, Len(str) - 2) ' remove last semi colon and space
Print #fnum, str
str = ""
rs.MoveNext
Loop
' close file
Close #fnum
End If
End With
Que Vous!
msoFileDialogSaveAs
n'est pas correctement pris en charge dans l'Accès. Si votre enregistrement d'un fichier qui a une .extension csv et excel est de vous donner cet avertissement, c'est ce qui est dans le fichier, c'est à l'origine du problème, pas son nom.Je vais regarder mon fichier de mise en forme pour s'assurer qu'il respect csv exigence. Il serait sympa de prévenir l'utilisateur d'enregistrer ce fichier sans extension.
Ne pouvez-vous pas utiliser le .Les filtres méthode ? Quel est le code qui enregistre le fichier ?
.Filtre me donne de l'utilisation incorrecte de la propriété. msoFileDialogSaveAs ne semble pas à l'appui de cette propriété.
Commentaire précédent devrait lire: .Filtre me donne: "la Méthode ou le membre de données introuvable". msoFileDialogSaveAs ne semble pas à l'appui de cette propriété.
OriginalL'auteur pec | 2011-10-14
Vous devez vous connecter pour publier un commentaire.
Comme indiqué il
FileDialog
aider les étatsmsoFileDialogSaveAs
n'est pas pris en charge.Vous pouvez forcer l'extension CSV sur
FileName
lorsque la boîte de dialogue décharge;Si excel n'est pas aimer votre CSV, vérifiez s'il y a des valeurs que vous avez besoin de devis pour échapper à des retours à la ligne/" (http://stackoverflow.com/questions/566052/can-you-encode-cr-lf-in-into-csv-files)
Et au lieu de ce modèle;
vous le pouvez;
Pour excel ne pas aimer mon csv: le problème venait de mon fichier commencé avec l'ID de la sorcière, c'est indiquer une SYLF fichier apparemment.
OriginalL'auteur Alex K.
En retard comme d'habitude mais j'espère une meilleure solution...
Comment ça marche?
Comme il est bon de savoir que vous pouvez pas directement de définir des filtres sur msoFileDialogSaveAs. Toutefois, si vous définissez la InitialFileName "*.ext", alors elle sera en vigueur à cette extension. Le filtre va encore dire "Tous les Fichiers" toutefois, il ne sera pas afficher les fichiers, sauf s'ils ont l'extension que vous avez fournis.
Le Résultat
Si vous effacez "*.ext" et il suffit d'écrire "test" par exemple le nom du fichier résultant sera "le test de la.ext", si elle a effectivement des forces de l'extension.
Il n'est pas parfait mais il est très simple et permet d'atteindre le résultat souhaité sans avoir à recourir à des appels d'API pour ceux qui sont moins expérimentés avec code.
Mises en garde
Cela ne fonctionne que pour une seule extension à un moment par exemple "*.csv". Si vous avez besoin de filtrer les extensions multiples, comme des images, alors vous allez avoir à recourir à des appels d'API.
.FilterIndex = 2
donc je l'ai enlevé, avec apparemment sans conséquence. Fin de commentaire à une réponse tardive...OriginalL'auteur Dave Williams
Que Mike a écrit et du lien qu'il a proposé, de choisir le filtre que vous voulez par défaut, vous pouvez:
ceux sont les extensions par défaut défini lorsque vous faites un
save as...
avec excel. Il y a 27 extensions différentes dans excel 2010, y compris ("unicode", "*.txt"). Si vous souhaitez proposer une extension personnalisée à l'utilisateur que vous pourriez faire çaC'est la meilleure réponse, à mon humble avis: je l'ai utilisé pour assurez-vous que le type de fichier par défaut est Excel 97-2003 (*.xls), indépendamment de la macro en cours d'exécution en 2003 ou 2016 (notre bureau est enfin la mise à jour mais c'est une conversion progressive et quelques autres outils internes attendre .xls.)
Ce fil ce qui concerne l'Accès, c'est différent.
OriginalL'auteur simpLE MAn
http://msdn.microsoft.com/en-us/library/office/aa219834(v=office.11).aspx
Utilisation filterindex pour sélectionner l'extension de votre choix de la liste par défaut (lancez la boîte de dialogue et de compte à rebours de la liste de votre extension), ou de modifier la saveas filtre de collection tel que documenté dans la page liée à msdn. Les filtres ne peuvent pas être modifiés dans le filedialog instance, avant que, avec un filedialogfilters de l'objet via l'Application.FileDialog(msoFileDialogSaveAs).Les filtres. Ils sont ensuite disponibles au sein de l'instance.
OriginalL'auteur Mike Gardner