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

Forumthread: UTF8 Optimierung export

UTF8 Optimierung export
04.10.2016 23:51:06
rocketfox
Hallo ich hatte schon einmal eine Frage gestellt wie ich ein Tabellen Blatt als txt im UTF8 exportiere.
daruf hin gab es 2 hilfen
die erste von baschti007

Sub export3()
Dim r        As Long
Dim arr      As Variant
Dim file     As Variant
Dim makeFile As String
makeFile = ActiveWorkbook.Path & "\export.txt"  ' Pfad
Set file = CreateObject("Scripting.FileSystemObject").createtextfile(makeFile, True, True) ' _
_
_
_
_
_
export.txt wird erstellt
With ActiveSheet
arr = .Range(.[A1], .UsedRange.Cells(.UsedRange.Cells.Count)) ' der Bereich der _
Kopiert werden soll wird festgelegt
If Not IsArray(arr) Then ' wenn der Bereich kein Array (nur eine Zeile also die erste)
file.WriteLine arr ' wird die erste Zeile in die TXT geschrieben
Else
For r = 1 To UBound(arr) ' Hier wird das array auseinander gepflückt für jede Zeile  _
_
_
_
_
_
( bei dir 95)
file.WriteLine Join(WorksheetFunction.Index(arr, r, 0), Chr(9)) ' hier wird die _
Zeile r in die Txt eingetragen und die einzelnen Spalten mit einem  Tab(Chr(9)) getrennt
Next
End If
End Sub
die Zweite von SFB
Sub export2()
Tabelle1.UsedRange.Copy
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
CreateObject("scripting.filesystemobject").createtextfile("c:\OF\UTf8.txt").write .GetText
End With
End Sub

bei version 1 dauert der export bei 8000 zeilen ca 7 min statt nur wenige sekunden kann hier etwas optimiert werden? sonst läuft alles problemlos.
bei version 2 geht der export in Sekunden aber es werden nicht alle zeichen korrekt

exportiert
80	Ś
81	ś
82	Ş
83	Š
84	š
85	Ţ
86	ţ
87	Ű
88	ű
89	Ÿ
90	Ź

diese Sonderzeichen sind der massstab
ich hoffe jemamd hat eine idee.
gruß chris
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UTF8 Optimierung export
05.10.2016 07:32:06
baschti007
Du kannst es ja nochmal so testen
Gruß Basti

Sub blaa()
Call SaveUTF8File(ActiveSheet.Name)
End Sub
Sub SaveUTF8File(ByVal WsName As String)
Dim fname As Variant
Dim myfilename As Variant
Dim strOrdner As String
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Worksheets(WsName)
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "C:\"
.Title = "Ordnerauswahl"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strOrdner = .SelectedItems(1)
If Right(strOrdner, 1)  "\" Then strOrdner = strOrdner & "\"
Else
strOrdner = ""
End If
End With
If strOrdner = "" Then
MsgBox ("Kein Ordner gewählt!")
Else
If MsgBox("Wirklich " & WsName & " TXT Datei erstellen ?", vbYesNo) = vbYes Then
myfilename = WsName & "_" & Format(Date, "DDMMYYYY")
fname = strOrdner & myfilename & ".txt"
If fname = False Then Exit Sub
Call SaveAsUTF8TXT(fname, ws)
End If
End If
End Sub
Sub SaveAsUTF8TXT(ByVal fname As String, ByVal wsa As Worksheet)
Dim hfile As Integer    ' Filehandle bzw. Dateinummer
Dim i As Long           ' Zähler über alle Zeilen
Dim j As Integer        ' Zähler über alle Spalten
Dim OneLine As String   ' Eine Zeile als String
Dim maxcol As Integer   ' max. Anzahl an Spalten
With wsa
hfile = FreeFile
maxcol = .Cells.SpecialCells(xlCellTypeLastCell).Column
Open fname For Output As #hfile
Print #hfile, Chr(&HEF); Chr(&HBB); Chr(&HBF);
For i = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
OneLine = ""
For j = 1 To maxcol - 1
OneLine = OneLine & Replace(.Cells(i, j).Text, Chr(34), Chr(34) & Chr(34)) & Chr(9)
Next
OneLine = OneLine & Replace(.Cells(i, j).Text, Chr(34), Chr(34)) & vbCrLf
Print #hfile, GetUTF8String(OneLine);
Next i
Close #hfile
End With
End Sub
' frei nach http://www. _
vovisoft.com/unicode/UniFunctions.htm#ToUTF8
Private 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 

Anzeige
AW: UTF8 Optimierung export
05.10.2016 22:58:31
rocketfox
Hallo ich habe diesen dicken Brocken einmal eingebunden.
Die Speicherung ist sehr fix vielen dank.
bei der Variante habe ich aber wieder Probleme mit DoppelAnführungzeichen. [aus " wird machmal "" ]
siehe Beispiel warum es nicht immer ist kann ich nicht erkennen.
https://www.herber.de/bbs/user/108609.xlsm
gruß chris
Anzeige
AW: UTF8 Optimierung export
06.10.2016 07:15:57
baschti007
Tja mit deiner ersten Bsp. Datei ( aus dem anderem Thread) klappt es.
Ändere mal so

Sub SaveAsUTF8TXT(ByVal fname As String, ByVal wsa As Worksheet)
Dim hfile As Integer    ' Filehandle bzw. Dateinummer
Dim i As Long           ' Zähler über alle Zeilen
Dim j As Integer        ' Zähler über alle Spalten
Dim OneLine As String   ' Eine Zeile als String
Dim maxcol As Integer   ' max. Anzahl an Spalten
With wsa
hfile = FreeFile
maxcol = .Cells.SpecialCells(xlCellTypeLastCell).Column
Open fname For Output As #hfile
Print #hfile, Chr(&HEF); Chr(&HBB); Chr(&HBF);
For i = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
OneLine = ""
For j = 1 To maxcol - 1
OneLine = OneLine & Replace(.Cells(i, j).Text, Chr(34), Chr(34)) & Chr(9)
Next
OneLine = OneLine & Replace(.Cells(i, j).Text, Chr(34), Chr(34)) & vbCrLf
Print #hfile, GetUTF8String(OneLine);
Next i
Close #hfile
End With
End Sub

Habe da nun einmal Chr(34) raus genommen.
Gruß Basti
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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