Clever-Excel-Forum

Normale Version: VBAHTML auf 64bit-Office
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
Alles funktioniert noch nicht. Die Profile muss ich noch anpassen. Da ist noch einiges zu tun.
"OPENFILENAME" scheint in der 64-bit-Version nicht zu laufen. Es erscheint weder der Dialog noch eine Fehlermeldung. Egal in welcher Datei der Code steht. Der Code rennt durch (auch die vielen Beispielcodes aus dem Internet). Kennt jemand dieses Problem und eine Lösung?
Hallo Rene,

der OpenFileName funktioniert auch unter 64Bit.

Hatte erst vor kurzem hier ein Beispiel gepostet.
https://www.clever-excel-forum.de/Thread...#pid220868

Aber es ist ein Detail zu beachten, für dessen Herausfindung ich damals auch länger gebraucht hatte.

Die StruktureSize-Angabe muss mit LENB() angegeben werden.
 .lStructSize = LenB(SpeichernAls)

Habe das jetzt in Deinem Tool nicht getestet, aber probiere es mal aus.

Viele Grüße
Karl-Heinz
Danke! Jetzt erscheint der Dialog. Aber jetzt kracht es bei "UTFOutput", keine Ahnung weshalb.
Versuche es mit:

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

Das passt zu Deiner Sub.
Obwohl in der Wn64-Declareliste ByVal lpWideCharStr As String steht, ist für Deine Sub m.E. ByVal lpWideCharStr As LongPtr angesagt.

viele Grüße
Karl-Heinz
Danke! Das probiere ich dann später aus. Aber typisch MS, nicht mal eine vernünftige Fehlermeldung. Blush
Eben getestet.Stürzt immernoch ab.
Ich hab ein meiner Bastelkiste, eine ähnliche, aber leicht abweichende Variante.

Kannst Du ja mal testen, ob die bei Dir durchläuft und auch das gewünschte Ergebnis bringt.

Ansonsten bin ich jetzt nicht der Fachmann für diese Funktion.

Code:

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

Sub UTF8Output(Datei As String, T As String, Optional BOM As Boolean = False)
        
 Dim tmp As String, l As Long, FF As Integer
 Dim tt As String
            
 If Len(Datei) = 0 Or Len(T) = 0 Then Exit Sub
  
 l = WideCharToMultiByte(65001, 0, StrPtr(T), -1, 0, 0, 0, 0) 'Anzahl Zeichen ermitteln
 tmp = Space$(l)
    
 WideCharToMultiByte 65001, 0, StrPtr(T), -1, tmp, l, 0, 0
 If Dir$(Datei) <> "" Then Kill Datei
 FF = FreeFile
 Open Datei For Binary As #FF
 Put #FF, , tmp
 Close #FF
    
End Sub

Sub Test()
 Dim T As String
 
 T = "düses ist än nöier Teßt"
 UTF8Output "C:\Users\voltm\Desktop\UTFTest.txt", T
End Sub

_________
viele Grüße
Karl-Heinz
Das funktioniert. Allerdings wird ein "White Space" eingefügt, welches in Notepad++ als "Null" mit schwarzem Hintergrund angezeigt wird. Merkwürdiger Weise hat mein Code in einer separaten Datei funktioniert, allerdings mit lauter "Null" mit schwarzem Hintergrund, also vollkommen falscher Inhalt.

Und damit hat sich auch das FTP-Problem gelöst (musste ja schiefgehen wenn keine Datei vorhanden ist :blus: ).
Die Word-Version habe ich eben auch angepasst. Funktioniert bei mir. https://www.rholtz-office.de/counters/ge...php?id=305
Seiten: 1 2 3 4 5