- 帖子
- 97
- 主題
- 26
- 精華
- 0
- 積分
- 158
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- office2010
- 閱讀權限
- 20
- 性別
- 男
- 來自
- taichung
- 註冊時間
- 2010-9-12
- 最後登錄
- 2019-8-29
|
本帖最後由 lionliu 於 2016-1-15 14:26 編輯
謝謝兩位大哥的協助
我已找到處理方式,謝謝。
在此我將它提供大家參考:- Sub FileZM(sFile As String, sCode As String, dFile As String, dCode As String)
- Dim objStream As Object
- Set objStream = CreateObject("Adodb.Stream")
- With objStream
- .Mode = 3 'adModeReadWrite = 3 ' 指示读/写权限。
- .Type = 1 'adTypeBinary = 1
- .Open
- .LoadFromFile sFile
- .Position = 0
- .Type = 2
- .Charset = sCode
-
- sCode = .ReadText
- .Position = 0
- .SetEOS
- .Type = 2
- .Charset = dCode
- .WriteText sCode
- .SaveToFile dFile, 2
- .Close
- End With
- Set objStream = Nothing
- End Sub
- Sub SAVE_TXT()
- Dim I%, x%, y%, arr, FileName$
- FileName = "D:\TEST\1000724.txt"
- Open FileName For Output As #1
- Do While Sheets(1).Cells(I + 1, "A") <> ""
- Print #1, Sheets(1).Cells(I + 1, "A")
- I = I + 1
- Loop
- Close #1
- 我原來第一個巨集呼叫fileZM處裡既可。
- Call FileZM(FileName, "big5", FileName, "utf-8")
-
- 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
此種寫法是我覺得最簡便的,請問是否有大哥可以指導修正。 |
|