Discussion:
von Excel-Ansi zu Unicode UTF-16
(zu alt für eine Antwort)
Markus Bärlocher
2006-01-16 21:33:42 UTC
Permalink
Guten Tag liebe Profis,

ich muss Excel-String-Zellen per VBA in eine Text-Datei schreiben.

Man sagt:
Excel verwendet "ANSI"
ich bräuchte "UNICODE" bzw. "UTF-16" (oder ersatzweise "ANSEL")
(Hintergrund: Zeichendarstellung deutsche Umlaute, französische
Zeichen
für internationalen, plattformübergreifenden Datenaustausch)

Wie geht das?
gibts da ein "Übersetzungs-Makro"?
(VBA, Excel 2000, Win98)

Herzlichen Dank
Markus
Michael Schwimmer
2006-01-17 02:28:13 UTC
Permalink
Hallo Markus,
Post by Markus Bärlocher
ich muss Excel-String-Zellen per VBA in eine Text-Datei schreiben.
Excel verwendet "ANSI"
ich bräuchte "UNICODE" bzw. "UTF-16" (oder ersatzweise "ANSEL")
(Hintergrund: Zeichendarstellung deutsche Umlaute, französische
Zeichen
für internationalen, plattformübergreifenden Datenaustausch)
Wie geht das?
gibts da ein "Übersetzungs-Makro"?
(VBA, Excel 2000, Win98)
meinst du so etwas?

Sub MakeUnicodeTextFile()
Dim strAusgabe As String
Dim lngFF As Long
Dim strFile As String

strAusgabe = Chr(&HFF) & Chr(&HFE) & StrConv("asdfASDF", vbUnicode)

strFile = "C:\test.txt"

If Dir(strFile) <> "" Then Kill strFile

lngFF = FreeFile

Open strFile For Binary As lngFF
Put lngFF, 1, strAusgabe
Close lngFF

End Sub

MfG
Michael
--
Michael Schwimmer http://michael-schwimmer.de
Excel VBA ISBN 3-8273-2183-2
Excel Programmierung - Das Handbuch ISBN 3-8606-3548-4
Markus Bärlocher
2006-01-17 23:26:00 UTC
Permalink
Hallo Michael,

danke für Deine Unterstützung!

Das mit der neuen Datei habe ich verstanden.
und in
Put lngFF, i, strAusgabe
zähle ich die Satznummer jedesmal hoch

Aber was macht
Chr(&HFF) & Chr(&HFE) in
strAusgabe = Chr(&HFF) & Chr(&HFE) & StrConv("asdfASDF", vbUnicode)
statt "asdfASDF" setze ich eine Variable und fülle sie mit meinen
Excel-Inhalten?
also z.B.: strQuelle = Worksheets("Quelle").Cells(z, s)

Gruss,
Markus
Michael Schwimmer
2006-01-18 01:51:23 UTC
Permalink
Hallo Markus
Post by Markus Bärlocher
Das mit der neuen Datei habe ich verstanden.
und in
Put lngFF, i, strAusgabe
zähle ich die Satznummer jedesmal hoch
i ist die Position, ab der geschrieben wird, kannst du aber auch
weglassen, dann wird hinter den letzten Schreibvorgang angehängt. Am
besten in der OH nach Open und Put schauen. Nicht verwechseln mit Write-
Anweisung.

Beachten sollte man, dass eine vorhandene Datei nicht hinter den letzten
geschriebenen Bytes gekürzt wird, also genau so groß bleibt, wie vorher,
wenn weniger Daten geschrieben werden. Wenn man nicht mit API-Funktionen
EOF setzen will, sollte man eine ältere Datei vorher löschen.
Post by Markus Bärlocher
Aber was macht
Chr(&HFF) & Chr(&HFE) in
strAusgabe = Chr(&HFF) & Chr(&HFE) & StrConv("asdfASDF", vbUnicode)
Am Anfang einer Unicode-Textdatei findet man die zwei Byte lange
Unicode-Spezifikation FFFE (little-Endian) FEFF (big-Endian). UTF8 wird
mit der Kennung EFBBBF versehen.

MfG
Michael
--
Michael Schwimmer http://michael-schwimmer.de
Excel VBA ISBN 3-8273-2183-2
Excel Programmierung - Das Handbuch ISBN 3-8606-3548-4
Loading...