返回列表 上一主題 發帖

sheet轉utf8 TXT 問題

sheet轉utf8 TXT 問題

各位大哥好:
小弟的TEST.XLS想轉出 UTF8 TEST.TXT但是一直無法克服,
我想用第一個巨集完成不知是否可行。 TEST.rar (12.79 KB)
lionliu

本帖最後由 lionliu 於 2016-1-15 14:26 編輯

謝謝兩位大哥的協助
我已找到處理方式,謝謝。
在此我將它提供大家參考:
  1. Sub FileZM(sFile As String, sCode As String, dFile As String, dCode As String)
  2. Dim objStream As Object
  3.     Set objStream = CreateObject("Adodb.Stream")
  4.     With objStream
  5.         .Mode = 3         'adModeReadWrite = 3 ' 指示读/写权限。
  6.         .Type = 1         'adTypeBinary = 1
  7.         .Open
  8.         .LoadFromFile sFile   
  9.         .Position = 0
  10.         .Type = 2      
  11.         .Charset = sCode

  12. sCode = .ReadText   
  13.        .Position = 0     
  14.        .SetEOS
  15.        .Type = 2      
  16.        .Charset = dCode   
  17.        .WriteText sCode   
  18.        .SaveToFile dFile, 2
  19.        .Close
  20.       End With
  21. Set objStream = Nothing
  22. End Sub

  23. Sub SAVE_TXT()
  24.     Dim I%, x%, y%, arr, FileName$
  25.     FileName = "D:\TEST\1000724.txt"
  26.     Open FileName For Output As #1
  27.     Do While Sheets(1).Cells(I + 1, "A") <> ""
  28.         Print #1, Sheets(1).Cells(I + 1, "A")
  29.         I = I + 1
  30.     Loop
  31.     Close #1
  32.    我原來第一個巨集呼叫fileZM處裡既可。
  33.    Call FileZM(FileName, "big5", FileName, "utf-8")
  34.    
  35. End Sub
複製代碼
以上是我在大陸網站所找到的資料,我修改後就能使用了
以下是我看到的另一種做法一併提供:但是不符合我的需求。
他會將所有資料寫入同一行,請問是否有方法可以讓他一列一行。
但文字當中不要有隱藏的折行符號。

Sub Day15_4_()
'多國語言文字寫入UTF8格式的文字檔
      Sheets(1).Select
      Dim Rng As Object
      Dim strData

      For Each Rng In Range("A1:b9")
          If Rng.Column = 1 Then
              strData = strData & Rng & vbTab
         ElseIf Rng.Column = 2 Then
             strData = strData & Rng & vbCr
         End If
     Next
     Debug.Print strData

     Dim fsT As Object
     Set fsT = CreateObject("ADODB.Stream")
     fsT.Type = 2 '指定類型,儲存文字資料使用2
     fsT.Charset = "UTF-8" '指定字元集為UTF8
     fsT.Open '開啟與寫入二進位資料到物件
     fsT.WriteText strData
     fsT.SaveToFile "D:\Day15_4_2.txt", 2 '寫入二進位資料到磁碟
End Sub
此種寫法是我覺得最簡便的,請問是否有大哥可以指導修正。
lionliu

TOP

回復 6# Joforn

謝謝 J大的指導,#3的部分我會再好好爬一下文。
lionliu

TOP

回復 6# Joforn
joforn 大哥好:
我試了我找到的方法,還有你的方法可以產生utf8,但是對方要求要沒有Bom檔首的utf8,
不知大哥或其他大大有無其他方法。
lionliu

TOP

回復  Joforn
joforn 大哥好:
我試了我找到的方法,還有你的方法可以產生utf8,但是對方要求要沒有Bom檔 ...
lionliu 發表於 2016-1-30 08:53

我試了
  1. Sub Day15_4_()
  2. '多國語言文字寫入UTF8格式的文字檔
  3.       Sheets(1).Select
  4.       Dim Rng As Object
  5.       Dim strData

  6.       For Each Rng In Range("A1:b9")
  7.           If Rng.Column = 1 Then
  8.               strData = strData & Rng & vbTab
  9.          ElseIf Rng.Column = 2 Then
  10.              strData = strData & Rng & vbCr
  11.          End If
  12.      Next
  13.      Debug.Print strData

  14.      Dim fsT As Object
  15.      Set fsT = CreateObject("ADODB.Stream")
  16.      fsT.Type = 2 '指定類型,儲存文字資料使用2
  17.      fsT.Charset = "UTF-8" '指定字元集為UTF8
  18.      fsT.Open '開啟與寫入二進位資料到物件
  19.      fsT.WriteText strData
  20.      fsT.SaveToFile "D:\Day15_4_2.txt", 2 '寫入二進位資料到磁碟
  21. End Sub
複製代碼
這方法是無bom檔首的,但是我要如何將整個工作表依順序寫入而不是合成一行,是否有大哥可以指導一下。
lionliu

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題