Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA代码赢得';t打开名为";CON.txt“;_Vba_Windows_Excel_Filenames - Fatal编程技术网

Excel VBA代码赢得';t打开名为";CON.txt“;

Excel VBA代码赢得';t打开名为";CON.txt“;,vba,windows,excel,filenames,Vba,Windows,Excel,Filenames,我正在处理一个包含管道分隔数据的大型文本文件,其中每行以文本“记录类型”字段开头,例如,“APP”、“ATT”、“CON”、“a”、“T”。。。我需要将文件拆分为一系列具有特定记录类型的文件,因此“APP.txt”包含所有应用程序记录类型,等等 我要做的是从源文件中读取一行,抓取第一个字段,检查令牌是否在集合中,然后,如果令牌在集合中,打开该文件并向其写入,或者如果令牌不在集合中,则创建一个新文件,向其写入,并将令牌添加到集合中。我的程序工作正常,但创建“CON.txt”文件时除外: 如果我从

我正在处理一个包含管道分隔数据的大型文本文件,其中每行以文本“记录类型”字段开头,例如,“APP”、“ATT”、“CON”、“a”、“T”。。。我需要将文件拆分为一系列具有特定记录类型的文件,因此“APP.txt”包含所有应用程序记录类型,等等

我要做的是从源文件中读取一行,抓取第一个字段,检查令牌是否在集合中,然后,如果令牌在集合中,打开该文件并向其写入,或者如果令牌不在集合中,则创建一个新文件,向其写入,并将令牌添加到集合中。我的程序工作正常,但创建“CON.txt”文件时除外:

  • 如果我从源文件中删除所有“CON”记录类型,它就可以正常工作

  • 如果第2行出现“CON”记录,它将在创建文件的第2行爆炸

  • 如果第50行出现一条“CON”记录,它将在第50行爆炸

  • 如果我在每个令牌前面添加一个
    p
    ,那么
    CON
    令牌现在就是
    pCON
    令牌,一切正常

我很困惑。你知道为什么一个特定的文件名会给这个程序命名吗?实际打开文件(抛出75运行时错误)的代码是:

其中,
sTgtDir
是一个以“\”结尾的路径,在所有其他情况下都有效,
sToken
是记录类型令牌,
iFileNo
是一个基于令牌集合中项目计数的整数。

DOS和Windows平台,因为这是指“控制台”(屏幕)的特殊名称。对不起,你运气不好!您只需使用不同的令牌名称(假设您没有更改操作系统的选项)。例如,在
打开
行之前,您可以添加:

If UCase(sToken) = "CON" then sToken = "pCON"

欢迎来到这个网站!查看和,了解更多有关提出问题以吸引高质量答案的信息,以及当有人评论或回答某个问题时该怎么做的信息。如果有人要求,您可以添加更多信息,但我怀疑是否有人会这样做。在尝试在Windows操作系统上创建任何文件之前,您应该阅读。有关将来的参考,请参阅。MS操作系统保留文件名CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8和LPT9,带或不带扩展名。
If UCase(sToken) = "CON" then sToken = "pCON"