Excel 如何将行保存到UTF-8中的文件?
我正在尝试将大型txt文件拆分为多个编码UTF-8的txt文件。我使用的语言是亚洲语言 我尝试了一些VBA和Python代码,但我无法实现这一点Excel 如何将行保存到UTF-8中的文件?,excel,vba,Excel,Vba,我正在尝试将大型txt文件拆分为多个编码UTF-8的txt文件。我使用的语言是亚洲语言 我尝试了一些VBA和Python代码,但我无法实现这一点 Sub ExportTextFiles() Dim i As Long Dim LastDataRow As Long Dim MyFile As String Dim fnum LastDataRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row For i =
Sub ExportTextFiles()
Dim i As Long
Dim LastDataRow As Long
Dim MyFile As String
Dim fnum
LastDataRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To LastDataRow
'The next line uses the contents of column A on the same row to name it
MyFile = "C:\Users\grego\Downloads\" & ActiveSheet.Range("A" & i).Value & ".txt"
'Use the following line instead to just create a series of numbered files
'MyFileName = "C:\Users\grego\Downloads\" & i & ".txt"
fnum = FreeFile()
Open MyFile For Output As fnum
Print #fnum, Format(Range("B" & i))
Close fnum
Next i
End Sub
这个宏运行得很好,但输出是ANSI,而不是Unicode,我得到的字符串是问号。任何帮助都将不胜感激!我也可以使用一些python。您可以使用对象来读写utf-8文件
Public Function ReadUTF8(f As String) As String
Dim st As Object
Set st = CreateObject("ADODB.Stream")
st.Charset = "utf-8"
st.Open
st.LoadFromFile f
ReadUTF8 = st.ReadText
st.Close
Set st = Nothing
End Function
Public Sub WriteUTF8(f As String, content As String)
Const adSaveCreateOverWrite = 2
Dim st As Object
Set st = CreateObject("ADODB.Stream")
st.Charset = "utf-8"
st.Open
st.WriteText content
st.SaveToFile f, adSaveCreateOverWrite
st.Close
Set st = Nothing
End Sub
那么,您只需要在循环中使用以下内容:
MyFile = "C:\Users\grego\Downloads\" & ActiveSheet.Range("A" & i).Value & ".txt"
WriteUTF8 MyFile, ActiveSheet.Range("B" & i).Text
谢谢但是我如何在上面的宏中使用它呢?您只需构建文件名并在循环中调用这两个方法进行读写。我觉得这部分很琐碎。你到底哪里有问题?如果我把它们放在宏的循环中,它就不起作用了。你能告诉我在哪里插吗。我会非常感激的!非常感谢你的帮助。那么,如果我们把这些放在一起,整个事情会是什么样子呢?我试着去做,但失败了,我做对了!非常感谢你的帮助