Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Textimport mit Trennzeichen

VBA - Textimport mit Trennzeichen
16.04.2020 09:54:53
Thomas
Hallo zusammen,
nachdem nun alle meine bisherigen Versuche gescheitert sind, möchte ich euch um Hilfe bitten. _ Es geht um einen VBA Code. Diesen habe ich hier aus dem Forum:

Sub A()
With Application.FileDialog(msoFileDialogOpen)
If .Show Then Sheets.Add , Sheets(Sheets.Count), , .SelectedItems(1)
End With
End Sub


Sub B()
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = "C:\Users\Thoma\Desktop\Test\*.txt"
If .Show Then
For Each f In .SelectedItems
Sheets.Add , Sheets(Sheets.Count), , f
Next f
End If
End With
End Sub

Der Code liest alle Textdateien ein, die sich in einem Ordner befinden und legt für jede dieser _ Dateien ein neues Blatt in Excel an. Leider werden in diesem Code keine Trennzeichen beachtet, die beim Import als Spalteneinteilung dienen. Meine Daten benutzen als Trennzeichen ein Komma. Um diese Problem zu lösen, habe ich mit dem Makrorekorder den Datenimport aufgezeichnet. Dieser Code ist dabei raus gekommen:

Sub Makro1()
Workbooks.OpenText Filename:="C:\Users\Thoma\Desktop\Test\amd.us.txt", Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True _
, TrailingMinusNumbers:=True
End Sub

Da ich leider noch ein absoluter Anfänger in VBA bin, habe ich versucht den Code an jeder beliebigen Stelle in den ersten Code zu setzten. Auch Beispiele aus dem Internet haben mir nicht weiter helfen können. Deshalb wollte ich fragen, ob mir nicht bitte jemand zeigen kann, wie das mit den Trennzeichen beim Textimport klappt.
Unter diesem Link habe ich euch eine Beispieldatei hochgeladen: https://www.herber.de/bbs/user/136776.txt
Vielen vielen Dank im voraus für eure Hilfe! Ich wünsche euch noch einen schönen Tag.
Grüße,
Thomas
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Textimport mit Trennzeichen
16.04.2020 18:14:30
fcs
Hallo Thomas,
Opentext öffnet eine Textdatei in Excel als Arbeitsmappe mit einem Tabellenblatt. Man muss die Datei öffnen und dann das Blatt in die Zieldatei kopieren und anschliessend die Textdatei ohne Speichern wieder schliessen.
Da deine Datei im US-Format (Dezimalzeichen = . und 1000er-Zeichen = ,) vorliegt müssen diese zusätzlich mit vorgegeben werden, da Excel sonst Zahlensalat importiert.
Ich setze hier auch immer die anderen möglichen Trennzeich auf False, da es vorkommen kann das Excel sich aus vorangegangen Aktionen Trennzeichen gemerkt hat, die dann ggf. den Import beeinflussen.
LG
Franz
Sub B()
Dim wkbZiel As Workbook, wkbTxt As Workbook
Dim f As Variant
Set wkbZiel = ActiveWorkbook
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = "C:\Users\Thoma\Desktop\Test\*.txt"
If .Show Then
Application.ScreenUpdating = False
For Each f In .SelectedItems
'evtl. xlWindows statt xlMSDOS verwenden
Application.Workbooks.OpenText Filename:=f, Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False, _
TrailingMinusNumbers:=True, DecimalSeparator:=".", ThousandsSeparator:=","
Set wkbTxt = ActiveWorkbook
wkbTxt.Sheets(1).Copy after:=wkbZiel.Sheets(Sheets.Count)
wkbTxt.Close savechanges:=False
Next f
Application.ScreenUpdating = True
End If
End With
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Textimport mit Trennzeichen in Excel


Schritt-für-Schritt-Anleitung

Um einen Textimport mit Trennzeichen in Excel über VBA durchzuführen, befolge diese Schritte:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub TextImportMitTrennzeichen()
       Dim wkbZiel As Workbook, wkbTxt As Workbook
       Dim f As Variant
       Set wkbZiel = ActiveWorkbook
    
       With Application.FileDialog(msoFileDialogFilePicker)
           .AllowMultiSelect = True
           .InitialFileName = "C:\Users\Thoma\Desktop\Test\*.txt"
           If .Show Then
               Application.ScreenUpdating = False
               For Each f In .SelectedItems
                   Application.Workbooks.OpenText Filename:=f, Origin:=xlMSDOS, _
                   StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
                   Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False, _
                   TrailingMinusNumbers:=True, DecimalSeparator:=".", ThousandsSeparator:=","
    
                   Set wkbTxt = ActiveWorkbook
                   wkbTxt.Sheets(1).Copy after:=wkbZiel.Sheets(Sheets.Count)
                   wkbTxt.Close savechanges:=False
               Next f
               Application.ScreenUpdating = True
           End If
       End With
    End Sub
  4. Speichere das Modul und schließe den VBA-Editor.

  5. Führe das Makro aus: Gehe zurück zu Excel, drücke ALT + F8, wähle TextImportMitTrennzeichen und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Lösung: Überprüfe den Pfad und stelle sicher, dass die Textdateien im angegebenen Ordner vorhanden sind.
  • Fehler: Importierte Daten sind durcheinander

    • Lösung: Stelle sicher, dass die richtigen Trennzeichen im Code gesetzt sind (in diesem Fall Komma).
  • Fehler: "Typkonflikt"

    • Lösung: Achte darauf, dass die Datei im passenden Format vorliegt und keine unerwarteten Zeichen enthält.

Alternative Methoden

  1. Manueller Import:

    • Du kannst die Textdatei auch über Daten > Aus Text/CSV importieren, was eine einfache Möglichkeit ist, wenn du keine VBA-Lösungen nutzen möchtest.
  2. Power Query:

    • Eine weitere Möglichkeit ist die Verwendung von Power Query, um die Daten zu importieren und zu transformieren, falls du Excel 2016 oder neuer verwendest. Dies ermöglicht eine benutzerfreundliche Bearbeitung von Importoptionen.

Praktische Beispiele

Hier ist ein Beispiel, wie du den Code anpassen kannst, um verschiedene Trennzeichen zu verwenden:

Sub TextImportMitSemikolon()
    ' Beispiel für Import mit Semikolon als Trennzeichen
    ' Ändere Comma:=True zu Semicolon:=True
    ' Rest des Codes bleibt gleich
End Sub

Tipps für Profis

  • Nutze Variablen: Ersetze fest codierte Dateipfade und Namen durch Variablen, um deinen Code flexibler zu gestalten.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um den Code robuster zu machen und bessere Fehlerberichte zu erhalten.
  • Dokumentation: Kommentiere deinen Code ausgiebig, um später nachvollziehen zu können, was jeder Teil des Codes bewirkt.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Dateien gleichzeitig importieren?
Mit dem Code oben kannst du mehrere Dateien auswählen, indem du die AllowMultiSelect-Option auf True setzt.

2. Unterstützt der Code auch andere Trennzeichen?
Ja, du kannst die Optionen für Tab, Semicolon, Comma, Space und Other anpassen, um andere Trennzeichen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige