Exceller:Enregistrez au format CSV via VBA et obtenez manuellement un fichier différent

StackOverflow https://stackoverflow.com//questions/23058398

  •  26-12-2019
  •  | 
  •  

Question

Je dois enregistrer plusieurs fichiers xlsm au format CSV afin de les importer dans d'autres programmes (tels que R, etc.).Eh bien, j'ai écrit les routines d'importation nécessaires dans tous les autres programmes et elles fonctionnent très bien avec le cas 1 :

Cas 1:Enregistrer manuellement un xlsm au format CSVSi j'utilise cette option, que j'enregistre manuellement chaque fichier au format CSV et que je clique sur OUI dans toutes les invites, j'obtiens un fichier .csv qui ressemble beaucoup à un fichier Excel normal lorsqu'il est rouvert dans Excel.Il s'agit d'une vue en colonnes standard, et rien n'est séparé par des virgules, etc.(C'est peut-être le cas, mais ça ne semble pas être le cas..)

Cas 2 :Enregistrer un xlsm de VBA au format CSVEh bien, ici, j'obtiens un fichier complètement différent lorsqu'il est rouvert dans Excel.Celui-ci ressemble à un "vrai" fichier csv avec toutes les valeurs séparées par des virgules.

Mes questions sont :1.Pourquoi y a-t-il une différence ?2.Comment puis-je accéder par programme au cas 2 à partir de VBA ?Ou est-ce impossible ?

Si 2 est impossible, je dois réécrire mes routines de code d'importation pour gérer le fichier csv "normal"... pas très difficile mais quand même beaucoup de travail et je me demande vraiment pourquoi il y a une différence.

Était-ce utile?

La solution

T1 : Je ne pense pas qu'il y ait une différence, du moins pas dans un exemple que j'ai pris. T2 : Essayez ceci :

J'ai 3 exemples de fichiers XLSM dans C:\stack\folder1 comme illustré ci-dessous :

start2

Chaque fichier contient une seule fiche technique, que nous transformerons en CSV :

start

Je suis sûr que votre routine est beaucoup plus compliquée, mais pour tester la sortie CSV, je vais simplement parcourir les fichiers et les enregistrer sous xlCSV:

Option Explicit
Sub TestCSVOutput()

Dim DataBook As Workbook
Dim DataSheet As Worksheet
Dim FilePaths(3) As String
Dim FileIdx As Long

'set up file paths for test
FilePaths(1) = "C:\stack\folder1\test_file_01.xlsm"
FilePaths(2) = "C:\stack\folder1\test_file_02.xlsm"
FilePaths(3) = "C:\stack\folder1\test_file_03.xlsm"

'loop through array and save each file as a CSV
Application.DisplayAlerts = False
For FileIdx = 1 To UBound(FilePaths)

    Set DataBook = Workbooks.Open(FilePaths(FileIdx))
    Set DataSheet = DataBook.ActiveSheet
    DataBook.SaveAs FileFormat:=xlCSV '<~~ the save step
    DataBook.Close

Next FileIdx
Application.DisplayAlerts = True

End Sub

Une fois le script terminé, je me retrouve avec trois fichiers CSV :

end2

Chaque fichier est délimité par des virgules lorsqu'il est ouvert dans un éditeur de texte :

enter image description here

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top