AW: CSV in XLS Konvertieren
26.12.2013 19:55:08
fcs
Hallo Pere,
bei der Dateierweiterung CSV hast du keine Einstellmöglichkeiten für das Trennzeichen außer dass du den Paramter "Local" auf True (dann lokale Einstelungen aus der Systemsteuerung, deutsch z.B. Semikolon als Trennzeichen, Komma als Dezimaltrennzeichen) oder False (dann US-Einstellungen mit Komma als Trennzeichen und Punkt als Dezimalzeichen).
Wenn du das Trennzeichen variabel setzen möchtest, dann musst du deine CSV-Dateien in TXT-Dateien umbenennen/kopieren.
Nachfolgend dein Makro entsprechend erweitert und angepasst.
Weitere Infos zu OpenText findest du in der VBA-Hilfe.
Gruß
Franz
Sub CSVXLS_variabel()
Dim wb As Workbook
Dim strFile As String, strDir As String, strTXT_File As String
Dim bolTab As Boolean, bolSemicolon As Boolean, bolComma As Boolean, _
bolSpace As Boolean, bolOther As Boolean, strOther As String, strSep As String
strSep = InputBox("Bitte Trennzeichen eingeben (Für Tabulator: vbTab)", _
"Trennzeichen für CSV-Import", Default:="vbTab")
Select Case strSep
Case "" 'Abbruch
Exit Sub
Case "vbTab": bolTab = True
Case ";": bolSemicolon = True
Case ",": bolComma = True
Case " ": bolSpace = True
Case Else
bolOther = True
strOther = Left(strSep, 1)
End Select
strDir = "C:\test\"
strFile = Dir(strDir & "*.csv")
Do While strFile ""
strTXT_File = strDir & strFile
strTXT_File = Replace(strTXT_File, ".csv", ".txt")
'CSV-Datei kopieren und in TXT umbenennen
VBA.FileCopy Source:=strDir & strFile, Destination:=strTXT_File
Workbooks.OpenText Filename:=strTXT_File, Tab:=bolTab, _
semicolon:=bolSemicolon, comma:=bolComma, Space:=bolSpace, _
other:=bolOther, otherChar:=strOther, Local:=True
Set wb = ActiveWorkbook
wb.SaveAs Replace(wb.FullName, ".txt", ".xlsx"), 51
wb.Close True
Set wb = Nothing
'TXT-Datei wieder löschen
Kill strTXT_File
strFile = Dir
Loop
End Sub