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

Zellinhalt auf UTF-8 prüfen/wandeln bevor #Print

Forumthread: Zellinhalt auf UTF-8 prüfen/wandeln bevor #Print

Zellinhalt auf UTF-8 prüfen/wandeln bevor #Print
24.03.2017 18:02:39
Siegfried
Hallo @alle!
Ich erstelle mit dem Macro eine Datei im KML – Format.
Diese sollte dann in ein FALK – Navi z.B. importiert werden.
Geht ohne Probleme solange nicht Sonderzeichen (Gerade Orts od. Straßennamen aus Ländern des Sü _
den, Osten od. Norden dabei sind) einwandfrei.

xmlns:gx="http://www.google.com/kml/ext/2.2"
xmlns:kml="http://www.opengis.net/kml/2.2"
xmlns:atom="http://www.w3.org/2005/Atom">

CP_XxxxXxxx17

AL-Lezh鬐
4501 Lezh骠
Rruga Lezh鬓hꭧjin

+355 692419834
19.627777,41.785833,0


AL-Berat / Poshnje
5001 Berat / Poshnje,
Rruga e Pashallis

+355 694263697
19.858611,40.778888,0


AL-Pogradec / Drilon
7301-7303 Pogradec / Drilon,
SH 64

20.709444,40.901388,0


AL-Radhime
9426 Radhime,
Nacional Road Vlore-Orikum km 7

19.478333,40.376944,0



Wenn es nicht geht, öffne ich diese KML-Datei mit GoogleEarth und speichere sie damit nieder, hier erfolgt eine Wandlung aller umstrittenen Wörter in das UTF-8 Format.
Mit dieser nun gewandelten Datei funktioniert anschließend auch der Import in das FALK-Navi problemlos.
Suche nun schon seit Tagen sowohl hier im Forum als auch im Internet nach einer brauchbaren Lösung, bin aber leider noch immer nicht fündig geworden bzw. konnte gefundenes nicht so umsetzten das es auch funktioniert.
Da ja eine solche KML-Datei in einer bestimmten Struktur erstellt sein muss mit Namen und Bezeichnungen welche mit UTF-8 nichts zu tun haben, und erforderliche Wandlungen auf UTF-8 daher nur auf Inhalte aus den ausgelesenen Cells kommen können.
Daher müsste doch der einfachste Weg, den Inhalt einer Variable z.B. (A12) welche den Inhalt einer Zelle zugeordnet bekommt dieser UTF-8 Prüfung und wenn erforderlich Umwandlung zu unterziehen und den neuen Wert an (A12) wieder zu übergeben, sein.
Wer kann mir bitte hier weiter helfen?
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalt auf UTF-8 prüfen/wandeln bevor #Print
25.03.2017 09:14:28
NoBody
Hi,
wenn man eine Text-Datei mit "workbooks.OpenText" öffnet, kann die die Kodierung auswählen. Versuche es einmal mit dem Rekorder.
mfg
AW: Zellinhalt auf UTF-8 prüfen/wandeln bevor #Print
25.03.2017 19:52:24
Siegfried
Hi NoBody!
Habe schon mehrmals den Hinweis auf einen Rekorder gelesen, kenne ich aber leider nicht und weis auch nicht wie und wo zu finden und zu bedienen.
Für mein angefragtes Problem „Zellinhalt auf UTF-8 prüfen/wandeln bevor #Print“ konnte ich inzwischen bereits eine Lösung finden und zwar habe ich meine erzeugte KML-Struktur, wird ja für jeden Datensatz extra erstellt, in eine Variable gelegt und mit dieser rufe ich die Funktion "GetUTF8String" auf.
Meine momentane Lösung sieht also so aus, gefunden im Beitrag von „bst“ vom 20.10.2006:

OneLine = Chr(9) + "" + vbCrLf + _
Chr(9) + Chr(9) + "" + A13 + A00 + "" + vbCrLf + _
Chr(9) + Chr(9) + "
" + _ IIf(Len(A04) > 0, A004, "") + _ IIf(Len(A05) > 0, A005 + "
" + vbCrLf, "") + _ IIf(Len(A07) > 0, Chr(9) + Chr(9) + A007 + vbCrLf, "") + _ Chr(9) + Chr(9) + "" + _ "" + Trim(StrX_Long) + "," + Trim(StrY_Lati) + ",0" + " _ " + _ "" + vbCrLf + _ Chr(9) + "
" Print #1, GetUTF8String(OneLine)

mit welcher dann die Korrektur auf UTF-8 durchführt wird.

' frei nach http://www. _
vovisoft.com/unicode/UniFunctions.htm#ToUTF8
Public Function GetUTF8String(s As String) As String
Dim i As Integer ' Zähler über die einzelnen Zeichen des utf16-Strings
Dim utf16 As Long, uc(2) As Byte
GetUTF8String = ""
For i = 1 To Len(s)
utf16 = AscW(Mid(s, i, 1))
If utf16 
Anschließend wird dieser Datensatz sofort über „Print #1“ in den bereits vorher angelegen KML-File weggeschrieben.
Nun erfolgt das gleiche Spiel mit dem nächsten Datensatz bis eben alle durch sind.
Hätte nicht gedacht, das diese Prüfung der gesamten Variable(OnLine) so schnell vor sich geht da er ja jeden Buchstaben prüfen muss.
Bin aber noch immer der Meinung, da ja nicht in allen Zellen Werte stehen (z.B. PLZ, TelNr., Faxnr.,WEB, Email usw.) die einer UTF-8 Wandlung zugeführt werden müssen, dass eine Prüfung der Variable nach auslesen aus der Zelle einfacher und schneller sein könnte.
Nur den Weg dazu finde ich leider nicht das nach Prüfung in der Funktion „GetUTF8String“ der dabei entstandene Wert an die Ursprungsvariable zurück gegeben wird.
Gruß Siegfried
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zellinhalt auf UTF-8 prüfen und wandeln für KML-Dateien


Schritt-für-Schritt-Anleitung

  1. Zelle definieren: Lege fest, welche Zelle du überprüfen möchtest. Zum Beispiel A12.

  2. Funktion zum Prüfen und Wandeln erstellen: Erstelle eine Funktion in VBA, die den Inhalt der Zelle überprüft und in UTF-8 wandelt. Hier ein Beispiel:

    Public Function GetUTF8String(s As String) As String
       Dim i As Integer
       Dim utf16 As Long, uc(2) As Byte
       GetUTF8String = ""
       For i = 1 To Len(s)
           utf16 = AscW(Mid(s, i, 1))
           ' Hier erfolgt die Umwandlung in UTF-8
           ' Code zur Umwandlung hier einfügen
       Next i
    End Function
  3. Zellinhalt verarbeiten: Rufe die Funktion auf, um den Inhalt der Zelle zu prüfen und zu wandeln, bevor du ihn druckst oder speicherst.

    Dim cellValue As String
    cellValue = Range("A12").Value
    Print #1, GetUTF8String(cellValue)
  4. KML-Datei generieren: Verwende die umgewandelten Strings, um die KML-Datei korrekt zu erstellen.


Häufige Fehler und Lösungen

  • Fehler: "Unicode-Zeichen werden nicht korrekt angezeigt."

    • Lösung: Stelle sicher, dass deine KML-Datei mit UTF-8 kodiert ist. Überprüfe die Funktion GetUTF8String, um sicherzustellen, dass alle Zeichen korrekt umgewandelt werden.
  • Fehler: "Das Makro funktioniert nicht wie erwartet."

    • Lösung: Überprüfe, ob die Zelle, die du prüfst, tatsächlich Daten enthält. Leere Zellen können zu Fehlern führen.

Alternative Methoden

Eine alternative Methode ist die Verwendung von Workbooks.OpenText, um Textdateien mit der richtigen Kodierung zu öffnen. Dabei kannst du die utf 8 check-Option auswählen. Dies ist besonders nützlich, wenn du Daten aus externen Quellen importierst.


Praktische Beispiele

Hier ist ein Beispiel, wie du den KML-Inhalt generieren kannst:

Dim OneLine As String
OneLine = Chr(9) + "<placemark>" + vbCrLf + _
          Chr(9) + Chr(9) + "<name>" + GetUTF8String(Range("A13").Value) + "</name>" + vbCrLf + _
          Chr(9) + "</placemark>"
Print #1, OneLine

In diesem Beispiel wird der Zellinhalt vor dem Drucken in die KML-Datei mit der GetUTF8String-Funktion umgewandelt.


Tipps für Profis

  • Nutze die Debugging-Funktion in VBA, um sicherzustellen, dass deine Funktionen wie gewünscht arbeiten.
  • Dokumentiere deine Funktionen gründlich, damit andere (oder du selbst in der Zukunft) leicht verstehen, wie die utf 8 pfeil-Logik funktioniert.
  • Experimentiere mit verschiedenen Kodierungen, um die beste für deine spezifischen Daten zu finden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die KML-Datei korrekt kodiert ist?
Überprüfe beim Speichern der Datei die Kodierungseinstellungen und stelle sicher, dass UTF-8 ausgewählt ist.

2. Was mache ich, wenn ich Sonderzeichen in meinen Zellinhalten habe?
Verwende die GetUTF8String-Funktion, um sicherzustellen, dass alle Sonderzeichen korrekt in UTF-8 umgewandelt werden, bevor du die Daten speicherst.

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