La conversion xls en csv à l'aide de VBScript et de les séparer par des points-virgules
J'ai un VBScript extrait de code qui convertit mon xls et xlsx fichiers dans des fichiers csv. Cependant, je veux que chaque cellule pour être séparés par un point-virgule plutôt qu'une virgule. Sur mon ordinateur, le séparateur de liste est définie pour le point-virgule au lieu d'une virgule, donc, quand j'ouvre une fenêtre d'excel et de le faire enregistrer au format csv, il sépare par un point-virgule. Cependant, mon VBScript produit un fichier csv séparé par des virgules. J'ai trouvé l'extrait de code en ligne que je ne sais pas vraiment VBScript (je suis principalement un Programmeur Java). Comment puis-je changer l'extrait de code pour séparer les fichiers csv par un point-virgule plutôt que par des virgules?
if WScript.Arguments.Count < 2 Then
WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done"
OriginalL'auteur Luke Mat | 2012-02-09
Vous devez vous connecter pour publier un commentaire.
vous pouvez garder votre script d'origine, seulement besoin de donner un paramètre pour indiquer le contexte local doit s'appliquer. Cela permet d'économiser mon CSV avec un ; séparateur
OriginalL'auteur peter
L'utilisation d'une virgule dans les fichiers texte délimités trouve ses racines dans les paramètres régionaux. Tandis que la virgule est standard aux états-unis, d'autres pays comme l'Allemagne utilisez le point-virgule à la place. Vous pouvez modifier le Séparateur de Liste de valeur dans les paramètres Régionaux et de Langue, puis choisissez CSV (délimité par des Virgules) (.csv) à partir d'Excel de la fenêtre Enregistrer sous. Le fichier résultant sera délimité par ce que la valeur est dans les paramètres du système. Ce script changements défaut, le Séparateur de Liste de réglage. Puis il ouvre la feuille de calcul et resauvegarde. Il reprend le système de réglage à sa valeur précédente avant de finir.
Il accepte deux paramètres de ligne de commande. La première est l'entrée de feuille de calcul; le second est le nom de fichier de sortie pour le fichier exporté.
Après quelques tests, il semble que cela ne fonctionne que grâce à Excel de la boîte de dialogue Enregistrer sous et non par le biais de la ligne de commande ou l'automatisation. J'ai modifié le script un peu pour rendre la fenêtre Excel visible et de l'utilisation des raccourcis de touches pour ouvrir la boîte de dialogue Enregistrer sous par le biais de l'interface d'Excel. Ceci devrait faire l'affaire. Il a travaillé pour moi sur Vista x64 avec Excel 2007. J'espère que cela fonctionne pour vous.
Ouais j'ai obtenu le même résultat. Il était séparé par des virgules. Je suis sur un ordinateur de l'école et peut-être il ne sera pas me permettre de modifier les clés de registre? Je vais essayer quand je suis sur mon ordinateur à la maison. J'espère que c'est la raison. Je vais vous faire part de mes résultats à la maison.
Luc, j'ai compris le problème et a affiché des nouveau code dans ma réponse. Cela devrait fonctionner pour vous.
Cela ne fonctionne pas non plus. Le fichier excel s'ouvre mais le code tente d'utiliser la commande "fatc" dans cmd et il dit ceci "ce n'est pas reconnu comme un interne ou de la commande de traitement par lots, un programme exécutable ou un fichier de commandes." L'habituel message d'erreur pour une commande incorrecte. Et la fenêtre excel se ferme aussi. Je ne sais pas pourquoi cette erreur se produit. Cependant, cette solution peut ne pas fonctionner pour moi, car il me semble que si une fenêtre d'excel sera ouverte pour chaque fichier excel que je suis en train de convertir, ce qui est un problème parce que je vais l'utiliser pour convertir autour de 700 fichiers excel à la fois...c'est beaucoup de excel windows.
Luc, quelle version de Windows et d'Excel que vous utilisez? Il paraît que c'est pas l'activation de la fenêtre Excel. Au lieu de cela, les frappes sont envoyés à l'actif de windows qui se trouve être une commande shell. Aussi, il va ouvrir les fichiers séquentiellement de façon à ce que vous ne devriez pas avoir de 700 excel fenêtres ouvertes en même temps.
OriginalL'auteur Nilpo
La Fonction enregistrer sous est défini ainsi :
.SaveAs(Nom De Fichier, FileFormat, Mot De Passe, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)
De pth est, pour utiliser le point-virgule (si votre langue régionale de l'option sont correctement définies)
ExcelObj.Workbooks(1).SaveAs csvFile, 6,,,,,,,,,,Vrai
Meilleure réponse ici ... la Seule chose que vous avez à regarder dehors pour est votre version d'Excel Vrai sur la position 12 travaux pour Excel 2013 Pour Excel 2010, il est de 2 arguments moins sur la position 10 On peut aussi vérifier: msdn.microsoft.com/en-us/library/office/... dans ce contexte ...
OriginalL'auteur Martin
Vous pouvez rouvrir le fichier avec l'OFS objet, puis de faire un Replace() sur le caractère virgule.
John Doe,Euro,"1,234.00"
permettra de résoudre àJohn Doe;Euro;"1;234.00"
, probablement pas ce que veut l'utilisateur.Évidemment, si c'est le type de données, il ne serait pas utile. Quand j'ai posté il n'y avait pas d'autres réponses, j'ai donc été tout simplement offrir quelque réponse.
Bien sûr. Et si l'utilisateur n'a qu'un ensemble limité de données sans virgule est qu'il va bien fonctionner. Toutefois, la conversion des données dans un bon fichier CSV est ambigeous. Même Microsoft n'a pas à suivre avec les rfc4180 le format de définition.
Oui, il y aura de l'argent dans les fichiers, c'est pourquoi je veux séparer par des points-virgules à la place des virgules. Si je n'étais pas à faire avec l'argent, je garderais avec des virgules et d'en rester là. Mais merci d'essayer de l'aider, je l'apprécie.
OriginalL'auteur Nathan Rice