Страницы: 1
RSS
Ошибка 1004 метода SaveAs при работе на сетевом ресурсе
 
Через код VBA организована подмена файла новым с переносом исходных данных.
И все хорошо когда файл лежит локально... и проходит на ура! Только скрываю запрос на замену...

Вот кусок кода...
Код
old_FileName = ThisWorkbook.FullName
' сохраним в архив текущую книгу
ThisWorkbook.SaveAs ThisWorkbook.Path & "\arhive_RemontKP_" & Format(Now, "YYYY-MM-DD-HHMMSS") & ".xlsm"
            
' заменить старый файл новой версией
Application.DisplayAlerts = False
iBook.SaveAs old_FileName
Application.DisplayAlerts = True
Но как только файл перемещается на сетевую папку как метод iBook.SaveAs old_FileName пишет ошибку "method saveas of object workbook failed"
Как я понял в данной ситуации не выходит запрос на перезапись файла совсем... он просто не освобождается пересохранением...

Как обойти ситуацию??? в чем может быть проблема???
 
Очевидно же, что проблема не в методе, а в сетевом диске. Руками туда все нормально копируется?
Хотя и в методе тоже: мало указать путь и имя, надо еще и тип формата файла указывать:
Код
iBook.SaveAs old_FileName, iBook.FileFormat
ну и уберите подавление системных сообщений(Application.DisplayAlerts = False) - вдруг там чего интересное пишут, а Вы не видите.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Пробовал убирать подавление... проблема записи не уходит, сообщений (даже о перезаписи - как локально) не выходит тоже.
Проблем с доступом к сетевой папке у пользователя нет... чтение и запись проходит на ура во всех иных случая... только вот это исключение вышло...

Как доказательство строка выше отрабатывает нормально (хотя сохраняется в тот же самый путь):
ThisWorkbook.SaveAs ThisWorkbook.Path & "\arhive_RemontKP_" & Format(Now, "YYYY-MM-DD-HHMMSS") & ".xlsm"

явное указание формата тоже не помогло.
 
Цитата
Леонид Коршак написал:
явное указание формата тоже не помогло
оно и не могло помочь для решения именно этой проблемы. Добавление формата избавит от проблем в будущем с открытием этого файла. Если его не указать есть шанс получить сообщение Excel о том, что формат файла не соответствует. И в лучшем случае файл откроется в итоге нормально, а в худшем - откроются иероглифы.
Цитата
Леонид Коршак написал:
проблема записи не уходит
а зачем вообще два сохранения? Вполне возможно, что первый файл на удаленном диске просто не успевает освободить память и возникает конфликт. Как вариант сделать задержку:
Код
old_FileName = ThisWorkbook.FullName' сохраним в архив текущую книгу
ThisWorkbook.SaveAs ThisWorkbook.Path & "\arhive_RemontKP_" & Format(Now, "YYYY-MM-DD-HHMMSS") & ".xlsm"
             
' заменить старый файл новой версией
Application.DisplayAlerts = False
dim lcnt&
err.clear
Do While Err.Number <> 0
doevents
iBook.SaveAs old_FileName, iBook.fileformat
lcnt = lcnt+1
'принудительный выход, если после 500 попыток ошибка не ушла
if lcnt > 500 then
   msgbox "Ошибка сохранения",vbinformation
   exit do
end if
loop
Application.DisplayAlerts = True
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх