【发布时间】:2011-05-26 04:33:09
【问题描述】:
我使用文本编辑器阅读了一个 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
【问题讨论】:
-
您正在使用文本编辑器阅读什么样的“Excel 2003 文件”?
-
看起来像 html 或 xml 类型的格式(我意识到可能不是特定于 XL2003)。
-
没有机会更改生成文件的代码?
-
@datatoo: 不,第三方,封闭源代码。
标签: character-encoding excel excel-2003 vba