1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| '----------------------------------------------------------------------------------------
Public Function MapperUnRéseau(StrChemin As String) As String
'----------------------------------------------------------------------------------------
' Mappe le réseau passé dans le chemin en argument et retourne la lettre utilisée.
' Si le réseau était déjà mappé, retourne aussi la lettre utilisée.
' Ou retourne vide si le mappage échoue.
' Exemple: MonLecteur = MapperUnRéseau("\\Clynas100\Dil$\AID")
'----------------------------------------------------------------------------------------
Dim ListeRéseau() As String
Dim i As Integer
On Error GoTo Gest_Err
' Liste les réseaux existants pour voir si le réseau demandé existe déjà:
ListeRéseau = Split(UNCPath_Lister, ",")
For i = LBound(ListeRéseau) To UBound(ListeRéseau)
' Si le réseau demandé existe déjà alors quitte:
If UCase(StrChemin) = Mid(ListeRéseau(i), 3) Then
MapperUnRéseau = Left(ListeRéseau(i), 1)
Exit Function
End If
Next i
' Boucle de Z à E pour installer le réseau (sans message si erreur):
For i = Asc("Z") To Asc("E") Step -1
If UNCPath_Mapper(Chr(i), StrChemin, False) = True Then
MapperUnRéseau = Chr(i)
Exit Function
End If
Next i
Gest_Err:
' Affiche un message d'erreur si c'est demandé:
If Err.Number <> 0 Then
MsgBox Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, Err.Source
ElseIf MapperUnRéseau = "" Then
MsgBox "Le chemin indiqué n'est pas valide : " & StrChemin, vbCritical + vbOKOnly
End If
Err.Clear
End Function
'----------------------------------------------------------------------------------------
Private Function UNCPath_Lister(Optional MessageSiErreur As Boolean = True) As String
'----------------------------------------------------------------------------------------
' Retourne la liste des lecteurs réseau dans une chaîne où les lecteurs sont séparés
' par une virgule. Exemple: "P:\\WP002FIC0057\OTT_L$, Z:\\Clynas100\Transfert$".
'----------------------------------------------------------------------------------------
On Error Resume Next
Dim wNwk As Object, oDrives As Object
Dim i As Integer
Set wNwk = CreateObject("WScript.Network")
Set oDrives = wNwk.EnumNetworkDrives
UNCPath_Lister = ""
For i = 0 To oDrives.Count - 1 Step 2
UNCPath_Lister = UNCPath_Lister & UCase(oDrives.Item(i)) & UCase(oDrives.Item(i + 1)) & ","
Next
' Nom de l'ordinateur, du domaine, de l'utilisateur:
'Debug.Print wNwk.ComputerName
'Debug.Print wNwk.UserDomain
'Debug.Print wNwk.UserName
' Affiche un message d'erreur si c'est demandé:
If MessageSiErreur = True And Err.Number <> 0 Then
MsgBox Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, Err.Source
End If
Err.Clear
End Function
'----------------------------------------------------------------------------------------
Private Function UNCPath_Mapper(StrLettre As String, StrChemin As String, _
Optional MessageSiErreur As Boolean = True) As Boolean
'----------------------------------------------------------------------------------------
' Permet de mapper un partage réseau.
' Sources : http://www.commentcamarche.net/contents/1347-wsh-objet-wshnetwork
' Exemple : Call UNCPath_Mapper("Y", "\\Clynas100\Dil$\AID")
' Retourne Vrai si le mappage réussi ou Faux en cas d'echec.
'----------------------------------------------------------------------------------------
On Error Resume Next
Dim wNwk As Object
Set wNwk = CreateObject("WScript.Network")
' True : le lecteur de réseau est stocké dans le profil de l'utilisateur:
wNwk.MapNetworkDrive Replace(StrLettre, ":", "") & ":", StrChemin, True
If Err.Number = 0 Then UNCPath_Mapper = True
' Affiche un message d'erreur si c'est demandé:
If MessageSiErreur = True And Err.Number <> 0 Then
MsgBox Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, Err.Source
End If
Err.Clear
End Function
'----------------------------------------------------------------------------------------
Private Function UNCPath_Supprimer(StrLettre As String, Optional MessageSiErreur As Boolean = True) As Boolean
'----------------------------------------------------------------------------------------
' Supprime la connexion réseau de la lettre StrLettre.
' Sources : http://www.commentcamarche.net/contents/1347-wsh-objet-wshnetwork
' Exemple : Call UNCPath_Supprimer("Y")
' Retourne Vrai si la suppression réussie ou Faux en cas d'echec.
'----------------------------------------------------------------------------------------
On Error Resume Next
Dim wNwk As Object
Set wNwk = CreateObject("WScript.Network")
' True : le lecteur de réseau n'est plus stocké dans le profil de l'utilisateur:
wNwk.RemoveNetworkDrive Replace(StrLettre, ":", "") & ":", True, True
If Err.Number = 0 Then UNCPath_Supprimer = True
' Affiche un message d'erreur si c'est demandé:
If MessageSiErreur = True And Err.Number <> 0 Then
MsgBox Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, Err.Source
End If
Err.Clear
End Function |
Partager