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

Forumthread: Unicode Dateien erkennen

Unicode Dateien erkennen
andi
Hallo zusammen,
ich habe VBA-Makros geschrieben, die CSV-Dateien (ASCII) zeilenweise einlesen und weiterverarbeiten. Demnächst muss ich zusätzlich Datein im Unicode-Format (UTF-8) einlesen.
Ich weiß, dass ich zum Öffnen der Unicode-Datei den 4. Parameter bei OptenTextFile setzen muss, das funktioniert auch, aber leider weiss ich vorher nicht, ob die Datei Unicode ist oder nicht (beides CSV-Dateien). Gibt es eine Möglichkeit per Makro herauszufinden, ob es sich um eine Unicode-Datei handelt, oder nicht?
Schon mal vielen Dank für eure Antworten!
Andi
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Unicode Dateien erkennen
31.01.2010 17:26:54
MichaV
Hallo Andi,
versuch das mal, scheint zu klappen.
Public Function GetFileEncoding(fnam)
Dim b1, FileNum
On Error Resume Next
FileNum = FreeFile
Open fnam For Binary As #FileNum
b1 = Input(1, #FileNum)
If Asc(b1) = &HFF Then
GetFileEncoding = UNICODE_FILE
ElseIf Asc(b1) = &HEF Then
GetFileEncoding = UTF8_FILE
Else
GetFileEncoding = ANSI_FILE
End If
Close #FileNum
End Function
Gruss- Micha
PS: http://www.developersdex.com/vb/message.asp?p=640&r=6366188
Anzeige
AW: Unicode Dateien erkennen
31.01.2010 18:35:47
andi
Danke - klappt!
;
Anzeige
Anzeige

Infobox / Tutorial

Unicode Dateien erkennen und deren Codierung ermitteln


Schritt-für-Schritt-Anleitung

Um die Codierung einer CSV-Datei herauszufinden, kannst du das folgende VBA-Makro verwenden. Es prüft, ob die Datei im Unicode-Format (UTF-8) oder im ANSI-Format vorliegt.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Public Function GetFileEncoding(fnam)
    Dim b1, FileNum
    On Error Resume Next
    FileNum = FreeFile
    Open fnam For Binary As #FileNum
    b1 = Input(1, #FileNum)
    If Asc(b1) = &HFF Then
        GetFileEncoding = "UNICODE_FILE"
    ElseIf Asc(b1) = &HEF Then
        GetFileEncoding = "UTF8_FILE"
    Else
        GetFileEncoding = "ANSI_FILE"
    End If
    Close #FileNum
End Function
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Du kannst nun die Funktion GetFileEncoding verwenden, um die Codierung einer CSV-Datei zu ermitteln.

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Stelle sicher, dass der Pfad zur Datei korrekt ist. Überprüfe auch, ob die Datei existiert und der Name richtig geschrieben ist.
  • Fehler: "Typ nicht definiert"

    • Dies kann passieren, wenn die Variable nicht deklariert wurde. Achte darauf, dass du Dim für alle Variablen verwendest.
  • Problem: Funktion gibt immer "ANSI_FILE" zurück

    • Möglicherweise ist die Datei beschädigt oder nicht im erwarteten Format. Prüfe den Inhalt der Datei in einem Texteditor.

Alternative Methoden

Wenn du die Codierung einer CSV-Datei bevorzugt ohne VBA ermitteln möchtest, kannst du folgende Schritte nutzen:

  1. Öffnen in einem Texteditor: Öffne die Datei in einem Texteditor wie Notepad++. Dieser zeigt die Codierung der Datei direkt an.
  2. Excel-Funktion: Wenn du eine Excel-Version hast, die Power Query unterstützt, kannst du die Datei importieren und die Codierung während des Importprozesses auswählen.

Praktische Beispiele

Um die Codierung einer Datei zu überprüfen, kannst du das Makro wie folgt aufrufen:

Sub TestEncoding()
    Dim filePath As String
    filePath = "C:\DeinPfad\deineDatei.csv" ' Ändere den Pfad zur Datei
    MsgBox GetFileEncoding(filePath)
End Sub

Dieses Beispiel öffnet ein Nachrichtenfenster mit der Codierung der angegebenen CSV-Datei.


Tipps für Profis

  • Regelmäßige Überprüfung: Wenn du häufig mit verschiedenen CSV-Dateien arbeitest, erwäge, das Makro in deine Arbeitsmappe zu integrieren, um die Codierung schnell zu überprüfen.
  • Automatisierung: Du kannst das Makro anpassen, um mehrere Dateien in einem Verzeichnis zu überprüfen und die Ergebnisse in einem Excel-Blatt zu dokumentieren.

FAQ: Häufige Fragen

1. Wie kann ich die Codierung einer CSV-Datei in Excel herausfinden? Du kannst das oben bereitgestellte VBA-Makro verwenden, um die Codierung der Datei zu ermitteln.

2. Was ist der Unterschied zwischen ANSI und UTF-8 Codierung? ANSI ist eine ältere Codierung, die nur eine begrenzte Anzahl an Zeichen unterstützt, während UTF-8 eine erweiterte Zeichencodierung ist, die nahezu alle Zeichen umfasst.

3. Wie kann ich eine UTF-8 Datei in Excel öffnen? Um eine UTF-8 Datei zu öffnen, kannst du die Datei über Daten > Aus Text/CSV importieren und sicherstellen, dass die Codierung auf UTF-8 eingestellt ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige