Excel, запись в TXT / Ошибка 54

Программирование на Visual Basic for Applications
AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Excel, запись в TXT / Ошибка 54

Сообщение AlexG » 10.05.2006 (Ср) 15:48

Скромный код который переносит значения столбца в TXT

Код: Выделить всё
iLastStroka = Range("A1").End(xlDown).Row
    Open "D:\3_Per\1.txt" For Output As #1
        For i = 1 To iLastStroka
                data = Cells(i, 1).Value
                Print #1, data
        Next i
    Close #1


.......но на Print #1, data идет ошибка Bad file mode (Error 54).

help по ошибке "A Print # statement specifies a file opened for an access mode other than Output or Append."

В чем ошибка то?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.05.2006 (Ср) 15:58

data = Cells(i, 1).Text
или
Print #1, CStr(data)
Lasciate ogni speranza, voi ch'entrate.

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 10.05.2006 (Ср) 16:04

и то и другое опять дает ошибку 54....

Да и в data - железно стринг идет....смотрел пошагово.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.05.2006 (Ср) 16:06

Я бы попробовал закрывать файл перед открытием...

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 10.05.2006 (Ср) 16:12

RayShade писал(а):Я бы попробовал закрывать файл перед открытием...


точно тут проблема....

Сам новый txt создавал вот так:

Код: Выделить всё
Workbooks.Add
    Path_Name = Path_BaseBook & "" & "1.txt"
    ActiveWorkbook.SaveAs Filename:= _
    Path_Name, FileFormat:=xlText, CreateBackup:=False
    ActiveWorkbook.Close SaveChanges:=True


Получается, что после последней инструкции 1.txt остается открытым...

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.05.2006 (Ср) 16:20

Хм. Это странный код. Получается что ты, создаешь файл, сохраняешь в него данные а потом перезатираешь.

Может стоит просто сделать

Код: Выделить всё
Path_Name = Path_BaseBook & "\" & "1.txt"
Open Path_Name for Output As #1
Close #1


И потом уже дальше?

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 10.05.2006 (Ср) 16:33

Нет....создаю новый...и потом помещаю в него данные....

Код: Выделить всё
' создаем новый txt    
    Workbooks.Add
    Path_Name = Path_BaseBook & "\" & "1.txt"
    ActiveWorkbook.SaveAs Filename:= _
    Path_Name, FileFormat:=xlText, CreateBackup:=False
    ActiveWorkbook.Close SaveChanges:=True

' заливаем  в новый txt данные с листа
iLastStroka = Range("A1").End(xlDown).Row
    Open Path_Name  For Output As #1
        For i = 1 To iLastStroka
                data = Cells(i, 1).Value
                Print #1, data
        Next i
    Close #1


Но все равно ошибка 54.

Может есть какая то другая техника порождения нового (пустого) txt?

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 10.05.2006 (Ср) 16:36

Весь прикол в том, что до отпуска этот код работал... :D

Что могли сделать с компом, то теперь идет сбой...?

Может какие то библиотеки?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.05.2006 (Ср) 16:40

Ты не просто создаешь новый TXT. Ты в него SaveAs книгу сохраняешь.

А пустой файл делается, как я тебе написал.

Код: Выделить всё
close #1
open fname for output as #1
close #1


И вот у нас есть пустой файл в который мы можем писать что угодно.

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 10.05.2006 (Ср) 17:23

Идея ясна. Спасибо RayShade.

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 16.10.2006 (Пн) 11:06

Почему не работает такая конструкция по созданию нового txt файла:

Код: Выделить всё
Close #1
Open  "D:\1\New.txt" For Output As #1
Close #1


Пишет....ошибка 53 "Fle not found"....

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 16.10.2006 (Пн) 13:46

уж не на первом ли Close #1?
Весь мир матрица, а мы в нем потоки байтов!

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 16.10.2006 (Пн) 13:52

Да нет....
На:
Код: Выделить всё
Open  "D:\1\New.txt" For Output As #1

Даже если убрать первый Close - тот же результат.....

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 16.10.2006 (Пн) 13:56

Даже если так сделать:

Код: Выделить всё
Dim FN As Integer
FN = FreeFile
Open  "D:\1\New.txt" For Output As #FN
Close #FN

...таже ошибка.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 16.10.2006 (Пн) 14:04

Может Path Not Found? Это в случае если каталог D:\1 не существует
Весь мир матрица, а мы в нем потоки байтов!

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 16.10.2006 (Пн) 14:11

мой настоящий код чуток не такой:

Код: Выделить всё
Dim FN As Integer
FN = FreeFile
Open Path_BaseBook & "\New.txt" For Output As #FN
Close #FN

где Path_BaseBook - путь книги из которой идет попытка создания пустого txt, так что ...сам понимаешь.....

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 16.10.2006 (Пн) 14:16

Значит что-то все-таки не то в сочетании Path_BaseBook & "\New.txt".
Я у себя сию ошибку не сумел воспроизвести никакими способами...
Весь мир матрица, а мы в нем потоки байтов!

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 16.10.2006 (Пн) 14:36

даже если сделать:
Open "c:\New.txt" For Output As #FN
..все равно таже ошибка...


Дело в другом....я думаю..в Версии сборки Office.
На другом компе идет на ура. Я уже когда мучался с кодом, где надо было сделать KILL file.....

На 5-ти из 8-ми компов идет нормально ....на 3-ех, хоть ты что угодно делай - не работает....

Так и с создание нового txt файла. Ладно - бум пробывать обходные пути......копировать другой txt, чистить его, блин....

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 16.10.2006 (Пн) 16:22

а антивирус (и какой если есть) на компьютере стоит,
и на тех компьютерах где запускается макрос?
I Have Nine Lives You Have One Only
THINK!

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 17.10.2006 (Вт) 9:25

У нас корпоративная сеть...

Посему у всех стоит одно и тоже ...и той же версии....Касперский для Windows Workstations.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 17.10.2006 (Вт) 9:34

AlexG
Могу сделать простое предположение.
Open "c:\New.txt" For Output As #FN

А ты уверен, что собственно можешь создавать файлы на диске C?
Попробуй создать файл вручную, с помощью проводника.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 17.10.2006 (Вт) 9:36

Вручную.....создается! Элементарно... :D

Там все проверено.......полные права доступа.....

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 17.10.2006 (Вт) 14:37

и, все-таки, попробуйте отключить Касперского
за ним такое замечалось иногда
I Have Nine Lives You Have One Only
THINK!

AlexG
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 08.12.2003 (Пн) 15:47
Откуда: Украина, Киев

Сообщение AlexG » 17.10.2006 (Вт) 16:30

Попробывал. Причина НЕ в Касперском.

Tatiana_K
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 15.12.2006 (Пт) 12:09
Откуда: Россия

Excel, запись в TXT / Ошибка 54

Сообщение Tatiana_K » 15.12.2006 (Пт) 18:12

Стандартная excel-евская на вашем компе не работает. Лечится использованием другой библиотеки для записи файла. А вообще-то нужно переустановить винду.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 107

    TopList