2008-10-15 11 views
2

J'ai une application VB qui extrait des données et crée 3 fichiers CSV (a.csv, b.csv, c.csv). Ensuite, j'utilise une autre feuille de calcul Excel (import.xls) pour importer toutes les données des fichiers CSV ci-dessus dans cette feuille. Le fichier import.xls possède une macro qui ouvre les fichiers CSV un par un et copie les données. Le problème auquel je suis confronté est que les dates dans les fichiers CSV sont stockées sous la forme mm/jj/aaaa et ceci est copié tel quel dans la feuille Excel. Mais je veux la date au format jj/mm/aaaa.Format de date CSV

Lorsque j'ouvre manuellement l'un des fichiers CSV, les dates sont affichées au format correct (mm/jj/aaaa). Une idée de comment je peux résoudre ce problème?

Répondre

8

Vous pouvez utiliser la fonction Format VBA:

Format(DateText, "dd/mm/yyyy") 

Ce sera formater jamais comment vous le souhaitez.

Pour une solution plus permanente, essayez de modifier vos paramètres régionaux dans Windows lui-même, Excel l'utilise pour son formatage de date.

Démarrer -> Paramètres -> Panneau de configuration -> Options régionales.

Assurez-vous que la langue est définie sur tout ce qui est approprié et que les paramètres de date sont que vous voulez qu'ils soient

+0

Le nombre d'enregistrements est élevé et il existe de nombreuses feuilles dans import.xls. Toute autre méthode pour le faire automatiquement? – Shoban

+0

Je viens d'éditer ce post, jetez un coup d'oeil à la modification des paramètres de Windows eux-mêmes – Mark

+0

Désolé, j'ai manqué de mentionner cela. Les paramètres régionaux sont corrects et comme prévu. Merci – Shoban

14

Lorsque je rencontre ce problème, j'écris généralement les dates sous la forme aaaa-mm-jj qu'Excel interprétera sans ambiguïté.

+1

de la date c'est le plus robuste des solutions recommandées ici. La manière dont Excel et VBA interagissent avec les paramètres régionaux du système est assez opaque et il est facile d'obtenir des résultats bizarres. L'utilisation de cette méthode évite beaucoup de code et n'est généralement pas problématique pour les utilisateurs. – Simon

1

d'abord toutes les autres réponses sont toutes bonnes, mais theres un peu plus d'informations que vous trouverez peut-être utile

Un fichier CSV contient uniquement du texte. C'est-à-dire que les données ne sont pas au format date mais dans un format texte. Ainsi, lorsque vous ouvrez un fichier CSV dans Excel, Excel interprète par défaut ces données pour vous. Ce n'est pas nécessaire. Vous pouvez le forcer à le laisser comme texte, ou comme mentionné par Mark vous pouvez ajouter du code dans votre macro d'importation qui le modifie pour vous. Si vous voulez un processus automatisé, alors c'est la meilleure solution. Ajoutez simplement le code dans VBA à la macro qui applique le format de date requis à la colonne avec les données de date. Vous pouvez également le faire manuellement une fois le fichier ouvert et les données collées en sélectionnant vous-même la colonne et en modifiant le format. Vous pouvez personnaliser les formats numériques (choisissez personnalisé), puis rédigez-le vous-même. Par exemple, jj/mm/aaaa.

+2

"Donc, quand vous ouvrez un fichier CSV dans Excel, Excel interprète par défaut cette donnée pour vous, il n'a pas à le faire, vous pouvez le forcer à le laisser comme texte" Comment le forcez-vous à le laisser comme texte? –

+0

Dans votre fichier CSV, placez-le entre guillemets et faites précéder le signe égal comme suit: = "jj/mm/aaaa" – BengalTigger

0

J'ai eu un problème similaire et a résolu le problème comme celui-ci, pour l'essentiel, il est « tout ce qui précède » l'option

  1. Avec format(date,'dd-mmm-yyyy') convertir la date au format 2-3-4 par exemple01-aug-2008, aucun moyen d'un ordinateur erreurs 01-aug pour 08-jan :-)
  2. Depuis la copie dans Excel revient automatiquement revenir au format de date/heure , convertir le résultat à une chaîne en utilisant la fonction cstr en 1
  3. Format des cellules dans lesquelles la date est copiée sous forme de texte (si vous ne le faites pas, Excel est borné, il va reconvertir en date/heure à nouveau
  4. Enregistrer la feuille en tant que fichier csv et ouvrir dans le bloc-notes pour confirmer qu'il a travaillé

Certaines personnes peuvent dire qu'il est exagéré, mais il vaut mieux être du côté sûr, que d'avoir un utilisateur me appeler un an et me dire qu'il fait quelque chose d'étrange avec