Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
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

Konvertierung UTF-8 zu ANSI

Konvertierung UTF-8 zu ANSI
15.01.2020 14:11:58
KaEmGe
Hallo,
ich habe schon ein wenig gegoogelt, krieg es aber nicht hin, die vorhandenen Beispiele für mich umzuschreiben.
Folgendes Problem:
Ich lese aus einer Textdatei (ca.20mb) im UTF-8 Format einzelne Textzeilen aus, die Umlaute werden mir im VBA nicht ordentlich im ANSI Format anzeigt. Die Datei selbst darf nicht umcodiert werden, höchstens als Kopie gespeichert werden. Ich möchte nicht z.b. auf Notepad++ zurückgreifen, um die Datei zu konvertieren.
Nun würde ich gern wissen, wie ihr dies rein mit VBA bewerkstelligen würdet - ich würde ungern die Zeile einlesen, um dann auf ein Replace-Array zurück zu greifen, da ich nicht weiss, ob in der Datei wirklich nur Umlaute vorhanden sind, sondern ggf. andere Zeichen.
Hat jemand eine Idee, wie hier vorzugehen ist?

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

Betreff
Datum
Anwender
Anzeige
AW: Konvertierung UTF-8 zu ANSI
15.01.2020 14:47:38
peterk
Hallo
Ein Beispiel
Option Explicit

Sub DatenBesorgen()
    Const adReadLine = -2 'Reads the next line from the stream 
    Const adReadAll = -1  'Reads all characters from the stream, from the current position to EOS 
    
    Dim DateiName 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"  'anpassen 

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

    row_number = 2

    Do Until objStream.EOS                                'Gesammtes TextDok durchgehen 
        LineFromFile = objStream.ReadText(adReadLine)     'Zeile aus Quelldatei einlesen 
        Worksheets("Tabelle1").Cells(row_number, 1).Value = LineFromFile
        row_number = row_number + 1
    Loop
    Set objStream = Nothing

End Sub

Anzeige
AW: Konvertierung UTF-8 zu ANSI
15.01.2020 14:53:18
KaEmGe
Hallo,
danke für die schnelle Rückmeldung.
Ich hatte jetzt so angefangen - um die Zeilen danach per Array auslesen zu können.
Ich wusste nicht, ob und wie hier ein "ReadLine" verwendet werden kann.
Deine Lösung gefällt mir um einiges besser.
Public Function ReadFileRows(path As String)
Static obj As Object, arrText
obj = VBA.CreateObject("ADODB.Stream")
obj.CharSet = "UTF-8")
obj.Open
obj.LoadFromFile path
ReadFile = obj.ReadText
arrText = Split(ReadFile, vbCrLf)
obj.Close

AW: Konvertierung UTF-8 zu ANSI
15.01.2020 20:42:33
Günther
Moin,
mit Power Query geht das sogar ganz ohne VBA und natürlich mit optischer Kontrolle.
Gruß
Günther
Anzeige

6 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige