Microsoft Excel

Herbers Excel/VBA-Archiv

UTF-8 code

Betrifft: UTF-8 code von: Pepi
Geschrieben am: 07.11.2012 08:53:09

Hallo zusammen, ich will eine Excel-Adressliste für einen Import in ein Siemens S685-Schnurlos-Telefon in eine *.vcf-Datei umwandeln. Mit dem nachfolgenden Makro funktioniert alles wunderbar, nur werden Umlaute (ä-ö-ü) nicht übernommen. Durch setzen des WEB-Codes auf UTF-8 klappt dies. Doch in diesem Makro wird die Datei mit dem Marko auf UTF-8 gesetzt und nicht die Exportdatei (sOut). Wollte dies mit Workbooks(sOut).Activate erreichen, doch funktioniert dieser Befehl in diesem Kontext nicht. Wer kann mir da weiterhelfen? - bin bestimmt ganz kurz vor dem Ziel.

Sub SU_Excel_to_Text()  
   Dim iFilNum As Integer, z As Long, sNam As String, sAdr As String, sTel As String, sOut As  _
String
   iFilNum = FreeFile
   Tab05.Activate
   sOut = ThisWorkbook.Path & "\Testfile-" & Format(Now, "yymmdd-hhmm") & ".vcf"
   Open sOut For Output As #iFilNum
   For z = 1 To 20
      sNam = Trim(Cells(z, 2) & " " & Cells(z, 3))
      sAdr = Trim(Cells(z, 6) & " " & Cells(z, 7))
      sTel = Cells(z, 9)
      Print #iFilNum, Join(Array(sNam, sAdr, sTel), ";")
   Next
   
   Workbooks(sOut).Activate 'Fehler "Index ausserhalb des gültigen Bereichs"
   With Application.DefaultWebOptions 'mit Makrorecorder aufgenommen
      .RelyOnCSS = True
      .OrganizeInFolder = True
      .UseLongFileNames = True
      .DownloadComponents = False
      .RelyOnVML = False
      .AllowPNG = True
      .ScreenSize = msoScreenSize1024x768
      .PixelsPerInch = 96
      .Encoding = msoEncodingUTF8
   End With
   With Application.DefaultWebOptions
      .SaveHiddenData = True
      .LoadPictures = True
      .UpdateLinksOnSave = True
      .CheckIfOfficeIsHTMLEditor = True
      .AlwaysSaveInDefaultEncoding = False
      .SaveNewWebPagesAsWebArchives = True
   End With
   Workbooks(sOut).Save 'Fehler "Index ausserhalb des gültigen Bereichs"
   Close #iFilNum
End Sub

vielen Dank
Pepi

  

Betrifft: AW: UTF-8 code von: bst
Geschrieben am: 07.11.2012 10:06:45

Hi,

was DefaultWebOptions angeht, keine Ahnung, ich habe hier nur xl2003.

Um die Ausgabe in sout zu ändern musst Du aber den Print-Befehl ändern, in etwa so:

Print #iFilNum, GetUTF8String(Join(Array(sNam, sAdr, sTel), ";") & vbNewLine);
Siehe hierzu:
http://www.excel-center.de/foren/read.php?2,51523,52235
https://www.herber.de/forum/archiv/812to816/812519_UTF8.html
http://www.office-loesung.de/ftopic231152_0_0_asc.php

cu, Bernd


  

Betrifft: AW: UTF-8 code von: Pepi
Geschrieben am: 07.11.2012 12:38:00

Hallo Bernd
Habe in einem deiner aufgeführten Links die Funktion GetUTF8String(sTxt As String) As String gefunden, die genau das macht, was ich vermisst habe - vielen Dank ond en schöne Tag
mfg
Papi


  

Betrifft: AW: UTF-8 code von: Rudi Maintaire
Geschrieben am: 07.11.2012 10:13:46

Hallo,
mit Open sOut For Output As #iFilNum erstellst du eine Textdatei ohne sie wirklich zu öffnen.
Mit Print #iFilNum, Join(Array(sNam, sAdr, sTel), ";") schreibst du Werte in diese Datei.
Workbooks(sOut).Activate schlägt fehl, weil es dieses Workbook nicht gibt.

Ich würde ä, ö, ü in ae, oe, ue umwandeln.

Gruß
Rudi


  

Betrifft: AW: UTF-8 code von: Pepi
Geschrieben am: 07.11.2012 10:58:55

Hallo Ruedi
das habe ich bereits gemacht, ist aber nicht schön!
Als ich das Ganz mit cells(z,s).value = sAdr gemacht habe, funktionierte dieser Code. Dafür musste ich aber die Daten vom Excel in eine bestehende *.vcf Datei kopieren - auch ein Schönheitsfehler.
Kann mir nicht vorstellen, dass dieses Problem nicht lösbar ist.
Vielleich weiss sonst jemand was...
mfg
Pepi