Excel 如何将行保存到UTF-8中的文件?

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 =

我正在尝试将大型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 = 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

谢谢但是我如何在上面的宏中使用它呢?您只需构建文件名并在循环中调用这两个方法进行读写。我觉得这部分很琐碎。你到底哪里有问题?如果我把它们放在宏的循环中,它就不起作用了。你能告诉我在哪里插吗。我会非常感激的!非常感谢你的帮助。那么,如果我们把这些放在一起,整个事情会是什么样子呢?我试着去做,但失败了,我做对了!非常感谢你的帮助