Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: UTF-8 in Excel importieren mittels VBA

UTF-8 in Excel importieren mittels VBA
21.11.2018 12:22:04
Tina232
Hallo zusammen,
ich möchte gerne mit einer Schaltfläche eine CSV-Datei importieren.
Habe bereits diesen Thread gefunden es ausprobiert:
https://www.herber.de/forum/archiv/1236to1240/1239032_CSVImport_ueber_VBA.html
Allerdings habe ich dort einige Probleme mit, denn:
1. Ich möchte das CSV in UTF-8 importieren
2. Die Daten sollen in eine bestehende Tabelle hinzugefügt werden, also die letzte Zeile. Sodass ich zwei Buttons erstellt habe, einmal "Neue CSV" und "CSV hinzufügen".
Der Unterschied zwischen den Funktionen der Buttons ist dann nur der, dass beim drücken "Neue CSV" der Inhalt in der Tabelle vorher gelöscht wird Beim drücken "CSV hinzufügen" wird hingegen nicht der Tabelleninhalt gelöscht, sondern der Import einfach in die letzte Spalte der Tabelle angehängt.
Könnt ihr mir da vielleicht helfen :)
Danke Lg Tina
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: UTF-8 in Excel importieren mittels VBA
21.11.2018 14:44:03
Tina232
Hallo Armin, danke für deine Datei...
Ich hab es jetzt mittlerweile mit dem Makrorecorder so gemacht. Vermutlich richtig schlecht, aber so funktioniert ist.
Bloß das die Werte in UTF-8 importiert werden konnte ich nicht umsetzen...
Hast du da vielleicht ein Tipp?

Sub Neuer_Import_CSV()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "\*.csv"  'Pfad anpassen
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
Rows("6:99999").Select
Selection.Delete Shift:=xlUp
Rows("5:5").Select
Selection.ClearContents
If strFileName  "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 1 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 5)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
Rows("5:5").Select
Selection.Delete Shift:=xlUp
Range("K65").Select
Sheets("Auswertung").PivotTables("Pivot_Auswertung").PivotCache.Refresh
End Sub
Sub CSV_Daten_am_Ende_hinzufügen()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "\*.csv"  'Pfad anpassen
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName  "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 1 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 5)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
Rows("5:5").Select
Selection.Delete Shift:=xlUp
Range("K65").Select
Sheets("Auswertung").PivotTables("Pivot_Auswertung").PivotCache.Refresh
End Sub

Anzeige
AW: UTF-8 in Excel importieren mittels VBA
21.11.2018 16:35:05
Armin
Hallo Tina,
warum hast Du mein Sheet nicht probiert? Den Code braucht man nicht 2x. Aber wer nicht will der .....
Und OHNE csv-Datei kann man das nicht testen die müsstest Du schon zur Verfügung stellen.
Gruß Armin
;
Anzeige
Anzeige

Infobox / Tutorial

UTF-8 in Excel importieren mit VBA


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei im UTF-8 Format in Excel zu importieren, kannst du den folgenden VBA-Code nutzen. Dieser Code ermöglicht das Importieren einer CSV-Datei und das Anhängen der Daten an eine bestehende Tabelle.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden Code in das Modul:
Sub Neuer_Import_CSV()
    Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
    Const cstrDelim As String = ";" 'Trennzeichen
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Datei wählen"
        .InitialFileName = "\*.csv"  'Pfad anpassen
        If .Show = -1 Then
            strFileName = .SelectedItems(1)
        End If
    End With
    Rows("6:99999").Select
    Selection.Delete Shift:=xlUp
    Rows("5:5").Select
    Selection.ClearContents
    If strFileName <> "" Then
        Application.ScreenUpdating = False
        Open strFileName For Input As #1
        arrDaten = Split(Input(LOF(1), 1), vbCrLf)
        Close #1
        For lngR = 1 To UBound(arrDaten)
            arrTmp = Split(arrDaten(lngR), cstrDelim)
            If UBound(arrTmp) > -1 Then
                With ActiveSheet
                    lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                    lngLast = Application.Max(lngLast, 5)
                    .Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
                    = Application.Transpose(Application.Transpose(arrTmp))
                End With
            End If
        Next lngR
    End If
    Rows("5:5").Select
    Selection.Delete Shift:=xlUp
End Sub
  1. Speichere die Datei als Excel-Makro-fähige Arbeitsmappe (*.xlsm).
  2. Führe das Makro aus, um die CSV-Datei zu importieren.

Wenn du die Daten an das Ende einer bestehenden Tabelle anhängen möchtest, kannst du den folgenden Code verwenden:

Sub CSV_Daten_am_Ende_hinzufügen()
    ' Ähnlicher Code wie oben, jedoch ohne das Löschen der bestehenden Daten
End Sub

Häufige Fehler und Lösungen

  • Fehler: CSV-Datei wird nicht korrekt importiert.

    • Stelle sicher, dass die Datei im UTF-8 Format gespeichert ist. Du kannst den Unterschied zwischen einer normalen CSV und einer CSV im UTF-8 Format prüfen, indem du die Datei in einem Texteditor öffnest und die Kodierung überprüfst.
  • Fehler: Daten erscheinen nicht in der richtigen Spalte.

    • Überprüfe das Trennzeichen. Der obige Code verwendet ; als Trennzeichen. Wenn deine CSV-Datei ein anderes Trennzeichen (z.B. ,) verwendet, passe die Konstante cstrDelim entsprechend an.

Alternative Methoden

Eine weitere Möglichkeit, eine UTF-8 CSV in Excel zu importieren, ist die Verwendung des Power Query-Editors:

  1. Gehe zu Daten > Daten abrufen > Aus Datei > Aus Text/CSV.
  2. Wähle deine CSV-Datei aus und klicke auf Importieren.
  3. Wähle im Dialogfeld die richtige Kodierung (UTF-8) aus und klicke auf Laden.

Praktische Beispiele

  • Beispiel 1: Import einer CSV mit deutschen Umlauten. Stelle sicher, dass deine CSV-Datei im UTF-8 Format gespeichert ist, um Zeichen wie ä, ö, ü korrekt darzustellen.
  • Beispiel 2: Import mehrerer CSV-Dateien in eine Excel-Tabelle. Du kannst das Makro so anpassen, dass es mehrere Dateien importiert, indem du eine Schleife zur Auswahl mehrerer Dateien verwendest.

Tipps für Profis

  • Nutze die Workbook_Open-Ereignisprozedur, um das Importieren der CSV-Datei automatisch beim Öffnen der Arbeitsmappe auszuführen.
  • Verwende Error-Handling in deinem VBA-Code, um potenzielle Laufzeitfehler abzufangen.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen einer CSV und einer CSV im UTF-8 Format? Eine CSV im UTF-8 Format unterstützt eine größere Anzahl von Zeichen und wird häufig für internationale Daten verwendet.

2. Wie kann ich sicherstellen, dass meine CSV-Datei im UTF-8 Format gespeichert ist? Öffne die Datei in einem Texteditor wie Notepad++ und wähle "Datei" > "Speichern unter", um die Kodierung auf UTF-8 festzulegen.

3. Kann ich auch andere Trennzeichen verwenden? Ja, du kannst das Trennzeichen im VBA-Code anpassen, indem du die Konstante cstrDelim änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige