Hallo. Ich will Tabellen aus Access mit VBA herausschreiben und als XML-Dokument speichern. ( Ich hoffe, ich hab das richtige Forum getroffen)
Das sind die Hauptvariablen, die dafür verwendet werden - filelist ist der Speicherpfad sammt Dateinname.
Hiermit füge ich die einzelnen Elemente in das FileSystemObject ein.
Der erste Teil von der Datei (Per TempString) eingelesen trägt zwar als Information
, wird aber (logischerweise) dadurch nicht gleich als UTF-8 behandelt(weil das ja eine Info für den Browser ist).
Am Schluss steht dann ein
zum Schließen des Objects.
Die Datei ist jetzt als ANSII gespeichert. Das Problem ist, dass ANSII Zeichen wie í nicht interpretieren kann.
Ein String kann zwar die speziellen Zeichen interpretieren und ich könnte ihn dann als ADODB Stream speichern
liste = liste & vbCrLf & xmlString
, der Nachteil ist aber eine hohe Speicherauslastung(durch den String), was die Verarbeitungszeit exponential steigert und auch zum Programmabsturz führen kann.
Zu meiner Frage
Ist es möglich, eine UTF-8 formatierte Datei zu erzeugen mit der gleichen Verarbeitungsgeschwindigkeit wie das FileSystemObject, oder kann ich das FileSystemObject als UTF-8 formatieren?
Code:
Dim inhalt As FileSystemObject
Dim liste As TextStream
Set inhalt = CreateObject("Scripting.FileSystemObject")
Set liste = inhalt.CreateTextFile(filelist, True, True)
Das sind die Hauptvariablen, die dafür verwendet werden - filelist ist der Speicherpfad sammt Dateinname.
Code:
liste.writeline (TmpString)
Hiermit füge ich die einzelnen Elemente in das FileSystemObject ein.
Der erste Teil von der Datei (Per TempString) eingelesen trägt zwar als Information
Code:
TmpString = "<?xml version=""1.0"" encoding=""UTF-8""?>"
Am Schluss steht dann ein
Code:
liste.Close
Die Datei ist jetzt als ANSII gespeichert. Das Problem ist, dass ANSII Zeichen wie í nicht interpretieren kann.
Ein String kann zwar die speziellen Zeichen interpretieren und ich könnte ihn dann als ADODB Stream speichern
liste = liste & vbCrLf & xmlString
Code:
Private Sub SaveXMLFile(XMLPath As String, XMLContent As String)
Dim ADODBStream As ADODB.Stream
Set ADODBStream = CreateObject("ADODB.Stream")
ADODBStream.Charset = "UTF-8"
ADODBStream.Open
ADODBStream.WriteText XMLContent
ADODBStream.SaveToFile XMLPath, adSaveCreateOverWrite
ADODBStream.Close
Set ADODBStream = Nothing
End Sub
Zu meiner Frage
Ist es möglich, eine UTF-8 formatierte Datei zu erzeugen mit der gleichen Verarbeitungsgeschwindigkeit wie das FileSystemObject, oder kann ich das FileSystemObject als UTF-8 formatieren?