Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Print #1 , äöü UTF-8

VBA Print #1 , äöü UTF-8
19.07.2018 17:03:47
R.Wichert
Hallo,
ich habe ein 'kleines' Script um eine XML 200 Zeilen zu erzeugen. Problem sind die umlaute.
VBA BEISPIEL Script:

Sub gen_030()
Dim i As Integer, Datei
Datei = FreeFile
Open "C:\Temp\030.xml" For Output As #Datei
Print #Datei, "?xml version=""1.0"" encoding=""utf-8""?>"
Print #Datei, "Document>"
Print #Datei, "Übertrag ""Öffentlich"" />"
Print #Datei, "Component Übertrag=""003_Binärwerte"" />"
Print #Datei, "Document/>"
Close #Datei
End Sub

Ergebnis:

'?xml version="1.0" encoding="utf-8"?>
'Document>
'ݢertrag "צfentlich" />
'Component ݢertrag="003_Bin峷erte" />
'Document/>
Einer eine Ideen warum er das nicht so in die Datei reinkopiert?
-> Die Öffnen '

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Archiv
19.07.2018 17:17:51
Fennek
Hallo,
im Code wird UTF-8 für die xml-Datei eingestellt, nicht für das Schreiben in die Datei.
Im Archiv habe ich diese 2 Varianten gefunden:

Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2                'Stream-Typ: Text/String
fsT.Charset = "utf-8"       'Zeichensatz
fsT.Open                    'Stream öffnen
fsT.WriteText tmpStr        'Daten schreiben
fsT.SaveToFile sFilename, 2 'Datei speichern
Set fsT = Nothing
Option Private Module
Option Explicit
Declare 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
Berichte bitte über Erfolg bzw Probleme.
mfg
Anzeige
AW: Archiv
19.07.2018 17:24:44
R.Wichert
Folgendes ist variante 1:
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2                'Stream-Typ: Text/String
fsT.Charset = "utf-8"       'Zeichensatz
fsT.Open                    'Stream öffnen
fsT.WriteText tmpStr        'Daten schreiben
fsT.SaveToFile sFilename, 2 'Datei speichern
Set fsT = Nothing
Richtig?
AW: Archiv
19.07.2018 17:30:00
R.Wichert
Hi,
habe versucht

fsT.WriteText tmpStr        'Daten schreiben
durch

fsT.WriteLine "DasIst ä Töxt" 'Daten schreiben

zu ersetz -> Objekt unterstütz die Methode nicht :S
Anzeige
AW: getestet
19.07.2018 17:51:46
Fennek

Sub T_1()
tmpStr = "qweüöä" & vbCrLf & "ASDLÖÄ"
sFilename = "c:\temp\ADO_Test.txt"
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2                'Stream-Typ: Text/String
fsT.Charset = "utf-8"       'Zeichensatz
fsT.Open                    'Stream öffnen
fsT.WriteText tmpStr        'Daten schreiben
fsT.SaveToFile sFilename, 2 'Datei speichern
Set fsT = Nothing
End Sub

AW: getestet
20.07.2018 07:41:51
R.Wichert
Danke Funktioniert.
AW: getestet
20.07.2018 07:54:39
R.Wichert
Hi,
noch eine kleine frage. ich habe mehrere Sub Module die jeweils etwas an die Datei anhängen. Das geht nicht mit ADODB oder?
Gruß und Danke Rob
Anzeige
AW: getestet
20.07.2018 08:22:50
R.Wichert
Erledigt ich muss "ByVal" das objekt übergeben.
Danke

31 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige