2017-02-17 80 views
1

ネットワークドライブにE​​xcelファイルを保存しようとしています。 問題は、ネットワークにアクセスできない場合、実行時エラーが発生することです。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 Then ...'をチェックしないでください。 –

+0

他のすべてのエラーを処理するためにセーブ行の後に別のエラーハンドラを置くことはできません。 –

+0

エラーが発生しなくてもローカルに保存していますか? –

関連する問題