Excel VBA-код не откроет файл с именем "CON.txt"


Я обрабатываю большой текстовый файл с разделенными каналами данными в нем, где каждая строка начинается с текстового поля "тип записи" - например," APP"," ATT"," CON"," A","T"... Мне нужно разделить файл на ряд файлов с определенными типами записей, так что " приложение.txt " имеет все типы записей приложений и т. д.

Я читаю строку из исходного файла, хватаю первое поле, проверяю, находится ли маркер в коллекции, а затем, если маркер находится в коллекции, открываю этот файл и запись в него или, если маркера нет в коллекции, создание нового файла, запись в него и добавление маркера в коллекцию. Моя программа работает нормально, за исключением случаев, когда создается "CON.txt" файл:

  • Если я удаляю все типы записей " CON " из исходного файла, это работает нормально.

  • Если запись " CON " появляется в строке 2, она взрывается в строке 2, создавая файл.

  • Если запись " CON " появляется в строке 50, она взрывается в строке 50.

  • Если я добавляю p перед каждым токеном, так что токены CON теперь являются токенами pCON, все работает нормально.

Я озадачен. Есть идеи, почему одно конкретное имя файла может дать этой программе conniptions? Код, который фактически открывает файл (который выдает ошибку 75 времени выполнения), является:

Open sTgtDir & sToken & ".txt" For Append As #iFileNo

Где sTgtDir - Путь, заканчивающийся на"", который работает во всех остальных случаях, sToken - маркер типа записи, а iFileNo - целое число, основанное на количестве элементов в коллекции токенов.

1 2

1 ответ:

Платформы DOS и Windowsне откроют дисковый файл с именем CON (с любым расширением) , потому что это специальное имя, относящееся к "консоли" (экрану). Извините - вам не повезло! Вам просто придется использовать разные имена маркеров (если у вас нет возможности изменить операционную систему). Например, перед строкой Open можно добавить:

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