我正在处理一个包含管道分隔数据的大型文本文件,其中每行都以文本“记录类型”字段开头,例如“APP”、“ATT”、“CON”、“A”、 “T”...我需要将文件拆分成一系列具有特定记录类型的文件,因此“APP.txt”具有所有APP记录类型等。
我正在做的是从源文件中读取一行,抓取第一个字段,检查 token 是否在集合中,然后,如果 token 在集合中,则打开该文件并写入它,或者如果 token 不在集合中,则创建一个新文件,写入该文件,然后将 token 添加到集合中。我的程序工作正常,除了创建“CON.txt”文件时:
如果我从源文件中删除所有“CON”记录类型,它就可以正常工作。
如果“CON”记录出现在第 2 行,则它会在创建文件的第 2 行被删除。
如果第 50 行出现“CON”记录,则它会在第 50 行被删除。
如果我在每个 token 前面添加一个
p
,那么CON
token 现在是pCON
token ,一切正常。
我很困惑。知道为什么一个特定的文件名会给出这个程序的配置吗?实际打开文件的代码(抛出 75 运行时错误)是:
Open sTgtDir & sToken & ".txt" For Append As #iFileNo
其中 sTgtDir
是以“\”结尾的路径,适用于所有其他情况,sToken
是记录类型 token ,iFileNo
是一个基于 Token 集合中项目数的整数。
最佳答案
DOS 和 Windows 平台 won't open a disk file named CON (with any extension) ,因为这是一个特殊的名称,指的是“CONsole”(屏幕)。抱歉 - 你运气不好!您只需使用不同的 token 名称(假设您无法选择更改操作系统)。例如,在 Open
行之前,您可以添加:
If UCase(sToken) = "CON" then sToken = "pCON"
关于vba - Excel VBA 代码无法打开名为 "CON.txt"的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51447729/