gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:07:23 25 4
gpt4 key购买 nike

我用文本编辑器阅读了一个 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

最佳答案

好吧,我认为您可以从另一个工作簿中做到这一点。添加对 ActiveX 数据对象的引用,然后添加以下子项:

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
然后使用关闭编码的文件路径调用此子程序。

关于character-encoding - 如何在 VBA 中打开使用错误字符编码编写的 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com