UTF8 Codierung funktioniert nicht mehr -

Bild

Betrifft: UTF8 Codierung funktioniert nicht mehr -
von: Maren
Geschrieben am: 16.10.2015 12:51:24

Hallo zusammen,
ich habe vor ein paar Wochen endlich die Lösung gefunden, wie ich eine UTF8 Codierung hinbekomme dank ganz großartiger Hilfe hier aus dem Forum. Jetzt funktioniert hier auf einmal gar nichts mehr. Ich denke es liegt sicher daran, dass ich einen neuen 64bit Rechner habe und vorher nur 32bit hatte. Aber ich weiß nicht, was ich umstellen muss. Das hier ist der Code zur Codierung:
Option Private Module
Option Explicit
Declare PtrSafe


Function WideCharToMultiByte Lib "kernel32.dll" (ByVal CodePage As Long, _
                                                         ByVal dwFlags As Long, _
                                                         ByVal lpWideCharStr As Long, _
                                                         ByVal cchWideChar As Long, _
                                                         ByVal lpMultiByteStr As Long, _
                                                         ByVal cbMultiByte As Long, _
                                                         ByVal lpDefaultChar As Long, _
                                                         ByVal lpUsedDefaultChar As Long) As  _
Long

Sub UTF8Output(Datei As String, t As String, Optional BOM As Boolean = False)
    
    Dim tmp() As Byte, l As Long, FF As Integer
        
    If Len(Datei) = 0 Or Len(t) = 0 Then Exit Sub
    l = WideCharToMultiByte(65001, 0, _
        StrPtr(t), Len(t), 0, 0, 0, 0)
    ReDim tmp(0 To l - 1)
    WideCharToMultiByte 65001, 0, StrPtr(t), Len(t), _
        VarPtr(tmp(0)), l, 0, 0
    FF = FreeFile
    Open Datei For Output As #FF
    Close #FF
    FF = FreeFile
    Open Datei For Binary As #FF
       Put #FF, , tmp
    Close #FF
End Sub

Das PtrSafe habe ich bei der Declare

Function schon mit reingenommen, jetzt wird aber an der Stelle StrPtr gemeckert. 
Hat jemand eine Ahnung, was da los ist?
Vielen Dank schon mal im Voraus,
Maren

Bild

Betrifft: AW: UTF8 Codierung funktioniert nicht mehr -
von: Nepumuk
Geschrieben am: 16.10.2015 13:30:00
Hallo,
teste mal (ohne Gewähr):

Private Declare PtrSafe Function WideCharToMultiByte Lib "kernel32.dll" ( _
    ByVal CodePage As Long, _
    ByVal dwFlags As Long, _
    ByVal lpWideCharStr As String, _
    ByVal cchWideChar As Long, _
    ByVal lpMultiByteStr As String, _
    ByVal cchMultiByte As Long, _
    ByVal lpDefaultChar As String, _
    ByVal lpUsedDefaultChar As LongPtr) As Long

Und ändere deine beiden Zeilen so:
l = WideCharToMultiByte(65001, 0, t, Len(t), vbNullString, 0, vbNullString, 0)

WideCharToMultiByte 65001, 0, t, Len(t), tmp(0), l, vbNullString, 0

Die Funktionen StrPtr, VarPtr und ObjPtr werden in Office 64 Bit nicht mehr unterstützt.
Gruß
Nepumuk

Bild

Betrifft: AW: UTF8 Codierung funktioniert nicht mehr -
von: Maren
Geschrieben am: 16.10.2015 14:05:24
Hi Nepumuk,
danke für die schnelle Antwort! Ich hab versucht, das so einzubauen, aber wenn ich den Code dann ausführe, stürzt Excel komplett ab.. ("Excel funktioniert nicht mehr")..
Ich habe jetzt schon alles probiert, den PC neugestartet, alle anderen Programme zu gemacht, es kommt immer zum Absturzt.

Bild

Betrifft: AW: UTF8 Codierung funktioniert nicht mehr -
von: Maren
Geschrieben am: 16.10.2015 14:06:16
Hi Nepumuk,
danke für die schnelle Antwort! Ich hab versucht, das so einzubauen, aber wenn ich den Code dann ausführe, stürzt Excel komplett ab.. ("Excel funktioniert nicht mehr")..
Ich habe jetzt schon alles probiert, den PC neugestartet, alle anderen Programme zu gemacht, es kommt immer zum Absturz.

Bild

Betrifft: AW: UTF8 Codierung funktioniert nicht mehr -
von: Nepumuk
Geschrieben am: 16.10.2015 14:26:53
Hallo,
ich schrieb ja ohne Gewähr da ich es nicht selbst testen kann.
Ich lass die Frage mal offen.
Gruß
Nepumuk

Bild

Betrifft: AW: UTF8 Codierung funktioniert nicht mehr -
von: Maren
Geschrieben am: 19.10.2015 09:50:03
Nochmal hallo,
ich habe jetzt echt alles ausprobiert, was mir einfällt. Die Lösung von Nepumuk läuft immerhin schonmal ohne Kompilierungsprobleme, lässt mein Excel nur leider komplett abstürzen.
Gibt es eventluell noch eine ganz andere Lösung, um die UTF8 Codierung hinzubekommen?
Und wird die 64Bit-Version des Makros auch auf 32Bit Excel laufen?
Vielen Dank & Viele Grüße,
Maren

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Datum vergleichen"