Frage

Ich muss mehrere XLSM-Dateien als CSV speichern, um sie in andere Programme (z. B. R usw.) importieren zu können.Nun, ich habe die notwendigen Importroutinen in allen anderen Programmen geschrieben und sie funktionieren sehr gut mit Fall 1:

Fall 1:Manuelles Speichern einer XLSM als CSVWenn ich diese Option verwende und jede Datei manuell als CSV speichere und bei allen Eingabeaufforderungen auf JA klicke, erhalte ich eine CSV-Datei, die beim erneuten Öffnen in Excel einer normalen Excel-Datei sehr ähnlich sieht.Es handelt sich um eine Standardspaltenansicht und es gibt keine durch Kommas getrennte Ansicht usw.(Vielleicht ist es das, aber es sieht nicht so aus.)

Fall 2:Speichern einer XLSM von VBA als CSVNun, hier erhalte ich eine völlig andere Datei, wenn ich sie erneut in Excel öffne.Diese sieht aus wie eine „echte“ CSV-Datei, bei der alle Werte durch Kommas getrennt sind.

Meine Fragen sind:1.Warum gibt es einen Unterschied?2.Wie kann ich Fall 2 programmgesteuert über VBA erreichen?Oder ist das unmöglich?

Wenn 2 nicht möglich ist, muss ich meine Importcode-Routinen neu schreiben, um die „normale“ CSV-Datei zu verarbeiten ... nicht sehr schwierig, aber immer noch eine Menge Arbeit und ich frage mich wirklich, warum es überhaupt einen Unterschied gibt.

War es hilfreich?

Lösung

F1: Ich glaube nicht, dass es einen Unterschied gibt, zumindest nicht in einem Beispiel, das ich zusammengestellt habe. F2: Probieren Sie Folgendes aus:

Ich habe 3 XLSM-Beispieldateien darin C:\stack\folder1 wie unten abgebildet:

start2

Jede Datei verfügt über ein einzelnes Datenblatt, das wir in CSVs umwandeln:

start

Ich bin mir sicher, dass Ihre Routine viel komplizierter ist, aber um die CSV-Ausgabe zu testen, gehe ich einfach durch die Dateien und speichere sie jeweils unter 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

Sobald das Skript abgeschlossen ist, erhalte ich drei CSV-Dateien:

end2

Beim Öffnen in einem Texteditor ist jede Datei durch Kommas getrennt:

enter image description here

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top