J'utilise actuellement cette fonction pour la sauvegarde, mais cela me pose problème:
Private Sub spara()
ActiveWorkbook.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
Il enregistre automatiquement avec ,
mais j'en ai besoin pour enregistrer avec ;
dans son fichier. Est-il possible de changer la façon dont cela économise?
J'ai essayé de rechercher Google pour résoudre ce problème, mais toutes les macros concernant l'enregistrement d'un fichier .csv indiquent simplement comment enregistrer au format .csv et comment fractionner plusieurs feuilles au format .csv.
Quelle langue utilise votre Excel? Si votre langue maternelle utilise ";" par défaut, vous pouvez passer le paramètre "local: = True"
ActiveWorkbook.SaveAs Filename:="C:\Temp\Fredi.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True
Sinon, votre seul choix est de chercher et de remplacer après ...
Modifiez les options Excel (options avancées et d'édition) pour définir le séparateur décimal sur ,
(évidemment (!)).
Il est fort possible que ce problème ne soit pas résolu en utilisant uniquement Excel VBA. Le problème est que, bien que Excel Save As...
utilise la valeur du séparateur de liste pour définir les paramètres régionaux, Excel VBA utilise toujours les paramètres régionaux en-US et utilise donc ,
comme séparateur de liste.
Je recommanderais de sauvegarder un fichier CSV puis d'utiliser une application/script de console personnalisée pour le post-traitement. Il y a beaucoup d'analyseurs CSV disponibles qui peuvent lire un ,-csv
puis l'enregistrer en tant que ;-csv
.
Je l'ai résolu en ajoutant "SaveChanges: = False" lors de la fermeture du classeur
With ActiveWorkbook
.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", FileFormat:=xlCSV, Local:=True
.Close SaveChanges:=False
End With
Pour les personnes ayant des problèmes avec ce code
dim wa as Workbook
Workbooks.OpenText FileName:=path2file, _
DataType:=xlDelimited, Semicolon:=True, Local:=True
set wa = ActiveWorkbook
wa.SaveAs FileName:=path2file, FileFormat:=xlCSV, _ ConflictResolution:=xlLocalSessionChanges, Local:=True
wa.Close False
La deuxième ligne est vraiment importante, si wa.Close False
n’est pas là, il demandera l’approbation de la sauvegarde ou, si wa.Close True
, il remplacera le ";" pour ",".
Après être entré dans les paramètres locaux et en faisant ";" le délimiteur de liste, VBA se séparait toujours avec un ",". Modification du code à ce qui précède et cela a été fait.
J'espère que cela jette un peu de lumière pour certains
J'avais cherché ceci pour aider à résoudre un problème similaire que j'avais, j'avais une feuille Excel que j'exporte dans un fichier csv, elle est ensuite téléchargée ailleurs mais nécessite l'utilisation de points-virgules plutôt que de virgules pour la séparation des caractères, cela a fonctionné très bien quand j'exportais manuellement le fichier car j'avais déjà modifié le Panneau de configuration >> Région et langue >> paramètres supplémentaires >> Séparateur de listes de virgule en point-virgule. Mais lorsque j'ai essayé d'automatiser via VBA, il est revenu par défaut à la virgule. Pour corriger ce problème, j'ai ajouté le paramètre de papramètre local suggéré par Christian Sauer ci-dessus, qui prend en compte le fait que j'ai modifié mes paramètres régionaux.
ActiveWorkbook.SaveAs Filename:="Filename.txt", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
Merci à Christian pour le pointeur.