2017-02-17 1 views
1

Я пытаюсь сохранить файл excel в сетевой диск с кодом ниже. Проблема в том, что если сеть недоступна, она дает ошибку времени выполнения.VBA - SaveAs - ошибка времени выполнения, если сеть недоступна

пожалуйста, вы можете помочь, как изменить код - для сохранения файла на данном сетевом диске, если сеть, доступную - если нет, то сохранить в локальную машину (создать копию в папке doucuments)

Благодарности

Dim datum_ As String 
Dim path_ As String 
datum_ = Format(Now, "yyyy-mm-dd hh-mm") 
path_ = "\\networkfolder" 

'Application.DisplayAlerts = False 
ActiveWorkbook.SaveAs Filename:=path_ & datum_ & ".xlsm" 
'Application.DisplayAlerts = True 

ответ

2
'.... code 
Application.DisplayAlerts = False 
On Error Resume Next 
ActiveWorkbook.SaveAs Filename:=path_ & datum_ & ".xlsm" 
If Err.Number <> 0 Then ActiveWorkbook.SaveAs Filename:=myLocalPath_ & datum_ & ".xlsm" 
Application.DisplayAlerts = True 
On Error Goto 0 
' .... code 
+0

«Конец, если» следует добавить, но работает! Спасибо за обоим! – Gexxx

1

Вы можете использовать обработку ошибок, поэтому, если есть ошибка, измените путь к чему-то локальному.

Dim datum_ As String 
Dim path_ As String 
datum_ = Format(Now, "yyyy-mm-dd hh-mm") 
path_ = "\\networkfolder" 

On Error GoTo localPath 
'Application.DisplayAlerts = False 
ActiveWorkbook.SaveAs Filename:=path_ & datum_ & ".xlsm" 
'Application.DisplayAlerts = True 

'rest of code here 
Exit Sub 

localPath: 
path_ = "insert local path here" 
ActiveWorkbook.SaveAs Filename:=path_ & datum_ & ".xlsm" 
+0

Параметр 'ErrHandler' называется во всех случаях. Почему бы не проверить 'If Err.Number <> 0 Then ...' –

+0

Не думал об этом, может просто поместить другой обработчик ошибок после строки сохранения, чтобы справиться со всеми другими ошибками. –

+0

Я имею в виду, что вы сохраняете локально, даже если ошибка не возникает? –

Смежные вопросы