Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CSV mit VBA öffnen, Problem mit Trennzeichen

CSV mit VBA öffnen, Problem mit Trennzeichen
21.09.2015 09:50:41
Klaus
Hallo
Ich versuche gerade mittels VBA eine CSV Datei zu öffnen, die aus einem Magento-Export stammt.
Hierbei habe ich das Problem, dass die Tabellen total verschoben sind weil die Separationszeichen nicht so erkannt werden wie ich das gerne möchte.
Wenn ich die csv vor dem VBA-Zugriff mit dem Windows Texteditor öffne und in die oberste Zeile sep=, schreibe, funktioniert alles tadellos.
Da das VBA Makro aber für Kollegen gedacht ist, die sich nicht so sehr mit dem Hintergrund des Ganzen beschäftigen, möchte ich diesen Schritt gerne mithilfe des VBA Codes vorwegnehmen.
Kann mir hierbei bitte jemand helfen?
Mein Code sieht so aus:

Dim varZielDatei As Variant
Dim varMagento As Variant
Dim WorkbookMagento As Workbook
Dim WorkbookZiel As Workbook
Dim WSMagento As Worksheet
Dim WSMagentoZiel As Worksheet
Public Sub Magento_Export_bearbeiten()
MsgBox ("Nun bitte die Magento-Exportdatei auswählen.")
Application.ScreenUpdating = False
'Open GetOpenFilename with the file filters.
varMagento = Application.GetOpenFilename( _
Title:="Magento-Exportdatei auswählen", _
MultiSelect:=False)
If varMagento = False Then
MsgBox "Abbruch durch Benutzer. Es wurde keine Datei ausgewählt.", vbInformation
Exit Sub
Else
MsgBox "Folgende Magento-Exportdatei wurde ausgewählt:" & vbCrLf & varMagento
End If
Workbooks.Open Filename:=varMagento
Set WorkbookMagento = Workbooks.Open(varMagento)
Set WSMagento = WorkbookMagento.Sheets(1)
Set WSMagentoZiel = WorkbookZiel.Sheets(3)
WSMagento.Cells.Select
Selection.Copy
WSMagentoZiel.Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
WorkbookMagento.Close Savechanges:=False

Ich habe versucht

Set WorkbookMagento = Workbooks.Open(varMagento, , , , , , , , , , , , , True)

zu verwenden weil ich gelesen habe, dass Local = True helfen soll, aber leider trifft das bei meinem Problem (oder zumindest meiner Anwendung) nicht zu.
Könnt ihr mir bitte weiterhelfen?

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV mit VBA öffnen, Problem mit Trennzeichen
21.09.2015 10:29:03
matthias
Hallo Klaus,
Daten mit Trennzeichen können einmal beim Importieren mit "Erterne Daten abrufen" oder wenn sie bereits im Dokument sind mit "Text in Spalten" zerlegt werden.
Hier ein Beispiel für letzteres:
    Range("A1:A30").TextToColumns _
Destination:=Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1)), _
TrailingMinusNumbers:=True

Wie du siehst sind die Optionen dazu recht vielseitig, desshalb am besten den Assistenten verwenden und probieren bis es so aussieht wie du es haben willst, dabei den Makrorekorder mitlaufen lassen um die perfekten Einstellungen zu erhalten.
lg Matthias

Anzeige
AW: CSV mit VBA öffnen, Problem mit Trennzeichen
21.09.2015 15:07:29
Klaus
Hallo Matthias,
zuerst: Vielen vielen Dank. Es funktioniert wunderbar.
Das mag jetzt vielleicht seltsam klingen, aber ich verstehe nicht ganz warum es funktioniert. Könntest du mir bitte noch zwei Fragen dazu beantworten damit ich es besser verstehe?
Der Range geht von A1 bis A30. Deshalb dachte ich erst, dass nur diese Zellen bearbeitet werden, aber in der Praxis wirkt sich das auf alle 1400 Zeilen aus, die ich habe.
Ich dachte, dass ich eigentlich Comma auf true setzen müsste weil ich ja auch Erfolg hatte als ich in die csv mittels Notepad ein "sep=," eingesetzt hatte. Kannst du mir noch bitte sagen warum es mit space funktioniert?

Anzeige
AW: CSV mit VBA öffnen, Problem mit Trennzeichen
22.09.2015 10:06:12
matthias
Hallo Klaus,
das mit dem Bereich wundert mich, eine kurze Probe bewirkt bei mir, dass wirklich nur diese Zellen bearbeitet werden, nicht der Rest. Ich verwende Office2013, aber das sollte hier keinen Unterschied machen.
Um die komplette Spalte A zu zerlegen, würde ich normalerweise schreiben:
Range("A:A").TextToColumns _
...

Der Grund warum es mit Leerzeichen funktioniert liegt wahrscheinlich darin, dass auf dein Komma ein Leerzeichen folgt. Das Komma bleibt dann aber erhalten, was bei Zahlen unter Umständen nichts ausmacht, bei Text ist das jedoch nervig. Ohne deine Daten zu sehen, lässt sich leider nicht viel dazu sagen.
Da du weist, dass dein Trennzeichen ein Komma ist, würde ich dies auch auf True setzen, Leerzeichen auf False, um Eventualitäten vorzubeugen.
lg Matthias
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige