Hallo Access-Freunde,
ein kleines Problem beschäftigt mich wieder mal bei meiner Pilzdatenbank. Ich gebe eine Liste im Excel-csv Format aus. Leider werden hier die Selbstlaute falsch dargestellt, also z.B ä, ö, ü.
Meine Transferzeile sieht wie folgt aus.
DoCmd.TransferText acExportDelim, "ExpInsdatenCSV", "CSV_Export", MykIS_Root & "expimp\Mykdaten.csv", True
Die Mykdaten.csv wird im UTF 8-Code erzeugt, sie muss aber im Ansi-Code erzeugt werden. Gibt es dazu einen Befehl in Access?
Beste Grüße
Frank
Hallo,
soweit ein manueller Zwischenschritt nichts ausmacht:
Die CSV mit Notepad öffnen und bei "speichern unter" den Code umstellen.
Ansonsten hätte ich da noch diese Funktion:Function Convert(myFileIn, myFileOut)
Dim stream, strTextText
Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = 2 'text
stream.LoadFromFile myFileIn
stream.Position = 0
stream.Charset = "iso-8859-1"
strText = stream.ReadText
strText = Mid$(strText, 3, Len(strText)) 'Die ersten beiden Scrottzeichen entfernen
stream.Close
stream.Open
stream.Type = 2
stream.Position = 0
stream.Charset = "utf-8"
stream.WriteText strText
stream.SaveToFile myFileOut, 2
stream.Close
Set stream = Nothing
End Function
In der Exportspezifikation - eine solche wird von Dir schon verwendet - sollte man auch die zu verwendende Codepage einstellen können.
Hallo,
vielen Dank für eure beiden Antworten. Die händige Umwandlung habe ich bis jetzt schon immer durchgeführt und wollte das nun bei der Erstellung schon automatisieren.
@Eberhard- In der Exportspezifikation kann ich bei den Textfeldern kein Format auswählen. Wie könnte ich dort den Ansi Code einstellen?
@andyfau- deinen Code muss ich erstmal verinnerlichen, da ich nichts so ein VBA Experte bin. Gilt der nur für ein Textfeld? Bei mir sind es ca. 10 Textfelder.
LG
Frank
Hallo,
die Exportspezi wird nicht pro Feld eingestellt, sondern für den Export insgesamt (gilt für alle Felder). Siehe Bild.
@Mykis DoCmd.TransferText hätte den Parameter CodePage.
Falls dir das neu ist einfach mal in die Hilfe schauen.
Grundsätzlich wundert mich das Thema aber.
Normal gibt es das umgekehrte Problem.
User benötigen Utf-8 und bekommen nur Ansi, was doch der Standard ist.
Warum das bei dir anders ist wundert mich doch etwas.
Vielleicht kennst du ja die Gründe dafür.
Zitat von: Mykis am Juni 03, 2021, 10:15:17@andyfau- deinen Code muss ich erstmal verinnerlichen, da ich nichts so ein VBA Experte bin. Gilt der nur für ein Textfeld? Bei mir sind es ca. 10 Textfelder.
Die Funktion zieht eine komplette Datei als Stream durch und funzt in alle Richtungen, je nach dem welchen iso-Code man einliest und welchen Charset man bei der Ausgabe wählt.
Aber wenn man in der Exportspezi einfach nur ein Häkchen setzen muss, ist das natürlich einfacher.
Zitat von: MzKlMu am Juni 03, 2021, 11:09:03Hallo,
die Exportspezi wird nicht pro Feld eingestellt, sondern für den Export insgesamt (gilt für alle Felder). Siehe Bild.
Hallo Klaus,
wo kann ich das Fenster das du in deinem Bild zeigst, in meiner accdb öffnen. Irgenwie stelle ich mich zu blöd an. Mein Fenster "gespeicherte Importe/Exporte" ist leer.
@markus888- Warum mein Access nur im UTF8 Format exportiert, weiß ich nicht.
LG
Frank
Die erwähnte Exportspezifikation hat mit gespeicherten Importen wenig zu tun. Letztere legen zwar auch welche an, versenken die aber in XML-Untiefen.
Importiere eine Textdatei per Hand (Menü, Externe Daten, Textdatei ...). Dort bekommst Du die relevanten Dialoge geliefert (=> Anschauen). Einstellungen speichern, Namen dazu merken. Diese angelegte Exportspezifikation solltest Du dann verwenden, geht auch als Importspezifikation.
Hallo Eberhard,
beim Importieren einer Textdatei wird mir kein ansi code zur Auswahl angeboten. In der MSysIMEXSpecs, wo die Exportspezifikation gespeichert ist, finde ich auch kein Feld, wo ein Code hinterlegt wäre. Bei filetyp steht "-535"?
LG
Frank
Hallo zusammen,
den filetyp in meiner Exportspezifikation habe ich von "-535" in "1258" geändert. Jetzt werden die Sonderzeichen in der csv richtig angezeigt.
Vielen Dank für eure Hilfe
LG
Frank
Hallo,
wo sind denn neuerdings die Button "Danke" und "Problem gelöst"?
LG
Frank
Hallo,
gibt's m. K. nach nicht mehr.