Anzeige
Archiv - Navigation
1708to1712
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

VBA: CSV importieren mit Unicode / UTF-8

VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 11:40:09
Hundepriester
Hallo,
ich habe ein Makro mit dem ich eine CSV Datei importiere und bearbeite. Die Umlaute werden leider nicht korrekt importiert.
Beispiel:
Anstatt "ü" wird "ü" angezeigt.
Anstatt "ö" wird "ö" angezeigt.
Der Code öffnet die CSV, separiert die CSV anhand von Kommata und importiert dann bestimmte Werte.
Lösungen:
Ich habe einige Lösungen gefunden, die passen aber alle nicht zu meinem Code. Ich würde ungern den kompletten Datenimport anders machen. Hat jemand vielleicht eine Idee, wie ich hier weiterkomme?
Aktueller Code:

Sub DatenBesorgen()
'Daten aus der CSV in die Excel kopieren
Dim DateiName As String
Dim ReplacePrep As String
DateiName = "C:\*****.csv"
Open DateiName For Input As #1
row_number = 10
Do Until EOF(1)
Line Input #1, LineFromFile
LineItems = Split(LineFromFile, ",")
Worksheets("Tabelle1").Cells(row_number, 1).Value = LineItems(3)
Worksheets("Tabelle1").Cells(row_number, 2).Value = LineItems(5)
Worksheets("Tabelle1").Cells(row_number, 3).Value = LineItems(6)
Worksheets("Tabelle1").Cells(row_number, 4).Value = LineItems(7)
row_number = row_number + 1
Loop
Close #1
End Sub

Vielen Dank für Hilfe! Bitte beachten, dass ich kein VBA Profi bin :)

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 12:31:44
peterk
Hallo
Du müsstest das FileSystemObject benutzen
Sub DatenBesorgen()
'Daten aus der CSV in die Excel kopieren 
    Dim DateiName As String
    Dim ReplacePrep As String
    Dim LineFromFile As String
    Dim LineItems As Variant
    Dim row_number As Long
    
    Dim objFSO As Object
    Dim objText As Object

    DateiName = "C:\*****.csv"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objText = objFSO.OpenTextFile(DateiName, 1, , -2)

    row_number = 10
    
    Do Until objText.AtEndOfStream                'Gesammtes TextDok durchgehen 
        LineFromFile = objText.ReadLine     'Zeile aus Quelldatei einlesen 
        LineItems = Split(LineFromFile, ",")

        Worksheets("Tabelle1").Cells(row_number, 1).Value = LineItems(3)
        Worksheets("Tabelle1").Cells(row_number, 2).Value = LineItems(5)
        Worksheets("Tabelle1").Cells(row_number, 3).Value = LineItems(6)
        Worksheets("Tabelle1").Cells(row_number, 4).Value = LineItems(7)

        row_number = row_number + 1

    Loop
    objText.Close
End Sub

Anzeige
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 12:52:41
Hundepriester
Hallo peterk,
habe den Code genau so umgesetzt. Lief auch Fehlerfrei durch, leider sind Umlaute und andere Sonderzeichen weiterhin falsch.
"ü" = ü etc.
Muss ich noch etwas machen, damit das mit dem FileSystemObject funktioniert?
/Noch als Hinweis: Ich nutze Office16, konnte das bei der Threaderstellung aber nicht auswählen.
Danke schon mal für deine Mühen!
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 13:45:43
Martin
Hallo peterk,
dversuche es mal so:
https://stackoverflow.com/questions/15151128/read-large-file-line-by-line-with-ado-stream/15166865
Viele Grüße
Martin
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 13:57:40
Hundepriester
Hi Martin,
danke für den Hinweis. Über den Thread war ich schon gestolpert, ich habe keine Ahnung was "ADO Stream" ist. Auch, wie und an welcher Stelle ich das dann anwende ist mir unklar.
Ich freue mich, wenn du mir da etwas genauer antworten kannst! :)
Als Hinweis noch:
Hundepriester ist der Fragesteller (ich)
Peterk hatte schon eine Antwort gepostet
Anzeige
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 13:58:32
Hundepriester
Häkchen setzen da Frage noch nicht beantwortet (Muss ich das Häkchen setzen oder kann man das auch editieren!?)
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 14:03:39
peterk
Hallo
Versuch mal die Zeile

Set objText = objFSO.OpenTextFile(DateiName, 1, , -2)
auf

Set objText = objFSO.OpenTextFile(DateiName, 1, , -1)
zu ändern. Wenn das auch nicht hilft, schick mir Bitte einen Kurzen Ausschnitt deiner CSV Datei
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 14:48:14
Hundepriester
Hallo,
habe das versucht, leider ohne Erfolg.
Getestet mit:
-2: Import klappt, aber Umlaute falsch
-1: Laufzeitfehler 9
0: Import klappt, aber Umlaute falsch
Hier die CSV - habe eine .txt draus gemacht
https://www.herber.de/bbs/user/131526.txt
Ich vermute, es liegt an den Anführungszeichen - die kann ich leider nicht beeinflussen.
Danke und VG!
Anzeige
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 15:01:34
Günther
Moin,
ich habe die *.txt eben einmal mit Power Query, -> http://www.excel-ist-sexy.de/power-query-das-add-in/ importiert, UTF-8 als Zeichencode gewählt und alles ist gut ... :-)
Gruß
Günther
AW: VBA: CSV importieren mit Unicode / UTF-8
21.08.2019 12:44:07
hundepriester
Hallo Günther,
danke für den Hinweis. Das funktioniert zwar, ich möchte sowas aber ja eben NICHT manuell machen ;)
Danke trotzdem, eine Lösung habe ich ja nun!
AW: VBA: CSV importieren mit Unicode / UTF-8
20.08.2019 15:07:30
peterk
Hallo
Ich hatte eine Denkfehler: Im FileSystemObject kann nur zwischen UNICODE und ANSI unterschieden werden, für UTF brauchen wir ADO
Sub DatenBesorgen()
'Daten aus der CSV in die Excel kopieren 
    Dim DateiName As String
    Dim ReplacePrep As String
    Dim LineFromFile As String
    Dim LineItems As Variant
    Dim row_number As Long

    Dim objStream As Object

    DateiName = "C:\Users\ich\Documents\Herber\131526.txt"

    Set objStream = CreateObject("ADODB.Stream")
    objStream.Charset = "utf-8"
    objStream.Open
    objStream.LoadFromFile (DateiName)

    row_number = 10

    Do Until objStream.EOS                       'Gesammtes TextDok durchgehen 
        LineFromFile = objStream.ReadText(-2)    'Zeile aus Quelldatei einlesen 
        LineItems = Split(LineFromFile, ",")

        Worksheets("Tabelle1").Cells(row_number, 1).Value = LineItems(3)
        Worksheets("Tabelle1").Cells(row_number, 2).Value = LineItems(5)
        Worksheets("Tabelle1").Cells(row_number, 3).Value = LineItems(6)
        Worksheets("Tabelle1").Cells(row_number, 4).Value = LineItems(7)

        row_number = row_number + 1

    Loop
    Set objStream = Nothing

End Sub

Anzeige
AW: VBA: CSV importieren mit Unicode / UTF-8
21.08.2019 12:42:41
hundepriester
Klasse! Das hat geklappt.
Vielen Dank! :)

109 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige