Суть проблемы в том, если файл 1.xls не запаролен, он отрабатывает успешно, без ошибок. Но когда я пытаюсь запустить файл, имеющий запароленный макрос, вываливается эта ошибка. При этом, если сохранять вручную, никаких проблем не возникает. Проблемный файл 1.xls прилагаю.
Тут все просто. Вы пытаетесь сохранить файл, который уже открыт под тем же именем самим Excel. Поэтому VBA и генерирует ошибку - файл занят процессом и не может быть перезаписан. Это недопустимо. Сохраняйте либо в другую папку, либо под другими именем.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
The_Prist написал: Вы пытаетесь сохранить файл, который уже открыт под тем же именем
Я открываю файл xls2txt.xls. Выполняю в нем макрос1. Открывается файл 1.xls, сохраняется как 1.txt. Где тут сохранение под тем же именем? Имя то же. но расширение txt. причем, когда я делал запись макроса, excel спрашивал меня. что файл 1.txt уже существует. заменить? Я согласился, нажав Да.
Да, проглядел расширение. Сказывается, видимо, пятница Но тем не менее. Файл такой есть и Excel делает запрос на его замену. И незаметно для Вас сначала его удаляет, а потом записывает новый. VBA этого за Вас делать не будет. И ошибка в VBA у Вас явно так же говорит о том, что файл такой уже есть. Поэтому сначала убедитесь, что такого файла нет на диске. Если есть - удаляйте:
Код
If dir("C:\nncron\thebat!\1.txt",16) <> "" then
kill "C:\nncron\thebat!\1.txt" 'удаляем файл, если он есть
end if
ActiveWorkbook.SaveAs Filename:="C:\nncron\thebat!\1.txt", FileFormat:=xlUnicodeText, CreateBackup:=False
P.S. Оформляйте код соответствующим тегом(<...>), а не шрифтом. Так нагляднее будет.
The_Prist, нет, файл 1.txt тут ни причем. Если вы выполните мой макрос с обычным xls файлом, никаких ошибок не возникнет, файл сохранится как txt, даже если он существует. Проблема возникнет, только если выполнить макрос с прикрепленным файлом 1.xls (причем его надо поместить в каталог C:\nnCron\thebat!)
Это не мой файл, пароля не знаю. Может быть, потому, что в 1.xls установлен VBAProject Password, макрос в файле xls2txt не отрабатывает? Тогда экспорт вручную в txt на этом файле 1.xls почему тогда работает?
А можно тогда, если уж макрос не получается выполнить на запаролленом файле, не выполнять его вообще? То есть, можно ли предварительно перед выполнением макроса проверить файл на защиту и если она установлена - не выполнять макрос? Как это сделать?
Эта команда копирует один(в данном случае первый) лист в новую книгу. Книга создается автоматически. В чем проблема? В том, что есть пароль на проект. А файл Вы кодом сохраняете без этого самого проекта. И т.к. там есть пароль на проект VBA - то доступа к проекту извне нет для его модификации. А удаление - та еще модификация. Т.е. по факту Вы не можете сохранить данный файл в любом формате, который не поддерживает хранение VBA проекта. А при копировании листа создается новая книга с одним лишь листом и без всяких проектов и защиты.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...