VBA zum import von CSV Dateien erkennt Trennzeichen nicht

Hallo,

ich habe ein Problem für das ich mir hier Hilfe erhoffe. Es ist bestimmt nur eine Kleinigkeit, jedoch sitze ich schon seid längerem davor ohne auch nur einen Ansatz an Lösung gefunden zu haben …

Ich habe ein VB Skript welches mir den Import von mehreren CSV Dateien in Excel ermöglicht. Für jede Datei wird eine neue Arbeitsmappe angelegt und mit dem selbigen Namen der Datei benannt. Das alles funktioniert einwandfrei, jedoch schreibt mir das Skript alle Datensätze zwar Zeilenweise getrennt, aber nicht Spaltenweise.

Ich importiere also eine CSV - Datei die wie follgt Aufgebaut ist:

Info1;Info2;Info3;Info4

Nach dem Import steht alles in Spalte A der Arbeitsmappe. Ich würde meinem Skript gerne ein Argument mit geben, das er das „;“ als Trennzeichen erkennt.

Ich hoffe hier kann mir jemand weiter helfen.

Beste Grüße

Lucas

Hallo,
ich habe in Excel ein Makro beim Öffnen einer Textdatei mitgeschrieben, daraus sollte erkennbar sein, wie die Syntax für Deinen Fall lautet (Underlines_ am Zeilenende bedeuten, dass der Befehl noch weitergeht):

Workbooks.OpenText Filename:=„Dateiname.Erweiterung“, _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, _
Other:=True, OtherChar:=";", FieldInfo:=Array(1, 1), _
DecimalSeparator:=".", ThousandsSeparator:=" ", _
TrailingMinusNumbers:=True

Das Semicolon kannst Du entweder bei „Semicolon:=“ einstellen, oder bei „Other:=“.
Du musst nicht alle Argumente des Befehls aufführen, nur die, die vom default abweichen.

Gruß

Danke für die schnelle Antwort, ich hoffe du kannst mir noch einmal helfen.
Ich weiß nicht genau wo ich den Code in mein Script einfügen muss … ich habe es mal hier gepostet.

Sub csv()

Dim oeffnen, n As Integer

Application.ScreenUpdating = False
oeffnen = Application _
.GetOpenFilename(filefilter:=„Text Files (*.csv), *.csv“, MultiSelect:=True)
If IsArray(oeffnen) = False Then GoTo ende

For n = 1 To UBound(oeffnen)
Workbooks.OpenText oeffnen(n)
ActiveWorkbook.Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Workbooks(Mid(oeffnen(n), InStrRev(oeffnen(n), „“) + 1)).Close False

Next n
ende:
Application.ScreenUpdating = True

End Sub

ich denke es muss irgendwo zwischen „Workbooks.Open…“ und „Next n“ oder?

Was ich Dir geschickt habe, ist ja nur ein einziger Befehl, der über mehrere Zeilen geht (Workbooks.OpenText). Und Du verwendest genau diesen Befehl ja auch schon, nur halt ohne die ganzen notwendigen Parameter. Ersetze Also einfach Deinen Befehl mit meiner Version:

Workbooks.OpenText Filename:=oeffnen(n), _ … usw.

Gruß - Andre

Sorry, weiss ich leider auch keinen genauen Rat.

Wenn Du eine Lösung hast wäre ich aber auch daran interessiert.

hast schon Antwort gekriegt?
wenn nein, sende mir mal dein skript