2017-02-17 6 views
1

Je tente d'enregistrer un fichier Excel dans un lecteur réseau avec le code ci-dessous. Le problème est que si le réseau n'est pas accessible, il génère une erreur d'exécution.VBA - SaveAs - erreur d'exécution si le réseau n'est pas accessible

Pouvez-vous s'il vous plaît aider comment modifier le code - pour enregistrer le fichier sur le lecteur de réseau donné si le réseau accessable - sinon, sauf dans la machine locale (créer une copie dans le dossier de doucuments)

Merci

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 

Répondre

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

Un "End if" devrait être ajouté, mais fonctionne! Merci pour les deux! – Gexxx

1

Vous pouvez utiliser la gestion des erreurs, donc s'il y a une erreur, changez le chemin vers quelque chose de local.

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

Le 'ErrHandler' est appelé dans tous les cas. Pourquoi ne pas cocher 'If Err.Number <> 0 Then ...' –

+0

N'a pas pensé à cela, peut simplement mettre un autre gestionnaire d'erreur après la ligne de sauvegarde pour faire face à toutes les autres erreurs. –

+0

Je veux dire que vous économisez localement même si aucune erreur ne se produit? –