如何在VBA中打开用错误字符编码编写的Excel文件

| 我使用文本编辑器阅读了Excel 2003文件,以了解一些标记语言。 当我在Excel中打开文件时,它显示不正确的字符。检查文件后,我看到编码是Windows 1252或类似的文件。如果我手动将其替换为UTF-8,我的文件将打开正常。好的,到目前为止,我可以手动纠正此问题。 现在的诀窍是,该文件是自动生成的,我需要使用桌面上的有限工具(无需perl或其他脚本语言)自动处理该文件(无需人工干预)。 有什么简单的方法可以在VBA中以正确的编码打开此XL文件(并忽略文件中指定的编码)? 请注意,Workbook.ReloadAs对我不起作用,它会在出现错误时提供帮助(并且由于文件已打开而需要手动操作)。 还是纠正文件经过一些麻烦的唯一方法?或者:输入文本,检查编码字符串行,如果需要,替换,将每一行写入新文件...;或导出到csv,然后使用特定编码再次从csv导入,另存为xls? 任何提示表示赞赏。 编辑: ADODB对我不起作用(XL表示用户定义的类型,未定义)。 我通过一种解决方法解决了我的问题:
name2 = Replace(name, \".xls\", \".txt\")
Set wb = Workbooks.Open(name, True, True) \' open read-only
Set ws = wb.Worksheets(1)
ws.SaveAs FileName:=name2, FileFormat:=xlCSV
wb.Close False                    \' close workbook without saving changes
Set wb = Nothing                  \' free memory
Workbooks.OpenText FileName:=name2, _
                   Origin:=65001, _
                   DataType:=xlDelimited, _
                   Comma:=True
    
已邀请:
好吧,我认为您可以从另一本工作簿中完成。添加对AcitiveX数据对象的引用,然后添加以下内容:
Sub Encode(ByVal sPath$, Optional SetChar$ = \"UTF-8\")

    Dim stream As ADODB.stream
    Set stream = New ADODB.stream

    With stream
        .Open
        .LoadFromFile sPath \' Loads a File
        .Charset = SetChar  \' sets stream encoding (UTF-8)
        .SaveToFile sPath, adSaveCreateOverWrite
        .Close
    End With

    Set stream = Nothing
    Workbooks.Open sPath
End Sub
然后使用带有off编码的文件路径调用此子。     

要回复问题请先登录注册