- 帖子
- 155
- 主題
- 1
- 精華
- 0
- 積分
- 200
- 點名
- 4
- 作業系統
- windwos 7
- 軟體版本
- 64bit
- 閱讀權限
- 20
- 註冊時間
- 2017-5-29
- 最後登錄
- 2026-10-25
|
本帖最後由 quickfixer 於 2021-11-24 17:23 編輯
回復 7# suchblue
變亂碼是簡繁轉換的問題吧?
參考https://stackoverflow.com/questions/31435662/vba-save-a-file-with-utf-8-without-bom
Sub test()
Dim arr As String, brr, txtutf8 As Object, txtutf8nobom As Object
For Each brr In Sheets("工作表1").Range("a1:e50").Rows '範圍
arr = arr & Join(Application.Transpose(Application.Transpose(brr)), vbTab) & vbCrLf
Next
'範圍不明用#2 .CurrentRegion.Rows, 或者改用#6 迴圈跑的Crr取代arr,比較不會抓錯範圍
Set txtutf8 = CreateObject("ADODB.Stream")
Set txtutf8nobom = CreateObject("ADODB.Stream")
With txtutf8 '有bom
.Charset = "UTF-8" '編碼
.Open
.WriteText arr
.Position = 0
.SaveToFile "c:\testutf8.txt", 2 '檔名
.Type = 2
.Position = 3
End With
With txtutf8nobom '沒bom
.Type = 1
.Open
txtutf8.copyto txtutf8nobom
.SaveToFile "c:\testutf8nobom.txt", 2
End With
txtutf8.close
txtutf8nobom.close
Set txtutf8 = Nothing
Set txtutf8nobom = Nothing
End Sub |
|