VBA替换不在Excel中处理文本文档的代码

时间:2016-08-11 12:14:46

标签: excel vba excel-vba

我有以下代码用文本文档中的逗号替换选项卡:

Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("Path:\CSV.txt", ForReading)

strText = objFile.ReadAll
strTab = vbTab

strText = Replace(strText, strTab, ",")

objFile.Close

Set objFile = objFSO.OpenTextFile("Path:\CSV.txt", ForWriting)

objFile.Write strText

objFile.Close

这适用于我自己创建的unicode文本文档,但是当在从excel创建的unicode文本文档上使用时会引发错误。

行:16 Char:1 错误:无效的过程调用或参数 代码:800A0005

以下是从excel创建的文本文件示例,它提供错误:

CSV.txt

任何人都可以看到导致错误的文本文档的不同之处吗?

编辑:我刚刚尝试将结果写入新的文本文档而不是覆盖相同的文档,但这只是在文档中给出了一个乱码的结果:

ÿþa 黐멸ȯ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 , , , , , 

 , , , , , , , 

 , , , , , , , 

EDIT2:使用来自'Siddharth Rout'的TristateTrue的建议让我超越了最初的'无效程序调用'错误,但现在我已经遇到了乱码的汉字输出 - 有人可以建议如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

替换

Set objFile = objFSO.OpenTextFile("Path:\CSV.txt", ForWriting)

Kill "Path:\CSV.txt"
Set objFile = objFSO.CreateTextFile("Path:\CSV.txt", True, True)

现在试试吧