2010-10-20 10 views
0

J'utilise ce code pour l'importation crypté Excel dans Access 2007:Réponse de l'accès VBA lors de la remise mot de passe incorrect pour l'importation de mot de passe crypté

xlApp.Workbooks.Open FileName:=dlgOpen.SelectedItems(i), PASSWORD:=strPasswd 

Il fonctionne bien si je donne le mot de passe, ou rien (je invite l'utilisateur à entrer à nouveau le mot de passe car il donne un mot de passe vide), mais pas pour un mauvais mot de passe, Access demandera l'erreur "1004", disant que le mot de passe n'est pas correct et demandera le débogage.

Comment puis-je le modifier afin qu'il rejette l'entrée de l'utilisateur et demande de nouveau mot de passe?

Merci!

Répondre

2

Vous devrez effectuer un piégeage d'erreur. Du haut de ma tête quelque chose comme ça

Public Sub Import (strPassword as String) 
On error goto Error_trap 
If len(strPassword)=0 then 
    strPassword=InputBox(“Enter Password”) 
End if 
xlApp.Workbooks.Open FileName:=dlgOpen.SelectedItems(i), PASSWORD:=strPasswd 

Exit Sub 

Error_trap: 

If err.Number=1004 then 
    If msgbox(“No Password entered, do you want to try again?”,36)=vbYes then 
     Import "" 
    Else 
     Msgbox “Ok fine be that way” 
    End if 
Else 
    Msgbox “Error happened in sub Import, error description, “ & err.description 
End if 
End Sub 
+1

Juste un petit mot de code: il est plus facile d'utiliser un SELECT CASE pour le branchement de votre gestionnaire d'erreurs, car même si vous commencez avec seulement deux possibilités, vous pourriez plus tard besoin d'une autre. Juste aujourd'hui, je codais un gestionnaire d'erreurs et j'ai commencé avec deux branches, et en test, j'ai rencontré un 3ème qui avait besoin d'être manipulé. Si j'avais utilisé un If/Then/Else, cela aurait été compliqué, mais puisque j'utilisais CASE SELECT, j'ai simplement ajouté le nouveau cas ... –