2017-02-16 3 views
1

Mon code est défini comme suit:Remplir les valeurs d'Active Directory pour tableau dans VBA

Dim objGroups As Object 
Dim arrMemberDN As Variant 
Dim arrList() As Variant 
Dim i As Integer 

Set objGroups = GetObject("LDAP://" & strGroupDN) 

For Each arrMemberDN In objGroups.member 
    arrMemberDN = Mid(arrMemberDN, 4, 7) 
    arrList(i) = arrMemberDN 
    i = i + 1 
Next arrMemberDN 

Mais je reçois toujours le

erreur d'exécution 9: Index hors de portée

sur arrList(i) = arrMemberDN

Comment remplir mon tableau arrList avec une valeur de arrMemberDN?

+0

Vous devez définir des dimensions pour votre baie. Par exemple. 'redim' –

+0

C'est parce que vous n'avez pas défini de taille pour le tableau arrList, il n'a qu'une seule place. Vous devez redim le tableau à la taille des objGroups. –

Répondre

5

D'abord vous devez créer des dimensions pour votre tableau, ici c'est pour un tableau 1D.

Ensuite, vous Redim Preserve pour conserver le contenu que vous y aviez.

REMARQUE: Redim Preserve ne peut être utilisé que pour modifier la dimension LAST!

Dim objGroups As Object 
Dim arrMemberDN As Variant 
Dim arrList() As Variant 
ReDim arrList(1 To 1) 


Set objGroups = GetObject("LDAP://" & strGroupDN) 

For Each arrMemberDN In objGroups.member 
    arrMemberDN = Mid(arrMemberDN, 4, 7) 
    arrList(UBound(arrList)) = arrMemberDN 
    ReDim Preserve arrList(LBound(arrList) To UBound(arrList) + 1) 
Next arrMemberDN 
ReDim Preserve arrList(LBound(arrList) To UBound(arrList) - 1) 
+0

Je suis tellement reconnaissant ... Merci beaucoup !!! C'est une bonne solution :) – yuro

1

Pour ajouter à la suggestion de @ R3uK. Vous étiez proche, si vous pouvez obtenir le nombre d'objets dans objGroups avant de commencer votre boucle, vous pouvez définir les limites de arrList juste une fois, ce qui sera plus rapide.

Dim objGroups As Object 
Dim arrMemberDN As Variant 
Dim arrList() As Variant 
Dim i As Integer 

Set objGroups = GetObject("LDAP://" & strGroupDN) 
ReDim arrList(1 to 'count of items in objGroups) 

For Each arrMemberDN In objGroups.member 
    i = i + 1   
    arrMemberDN = Mid(arrMemberDN, 4, 7) 
    arrList(i) = arrMemberDN 
Next arrMemberDN 
+0

Comment comptez-vous une variable d'objet avec des valeurs par AD? – yuro

+0

Eh bien, vous avez utilisé 'objGroups.member' pour obtenir des membres, peut-être' objeGroups.member.count' les compterait-il? – CallumDA

+0

Non, ce n'est pas le cas. J'obtiens une erreur que cette méthode n'est pas définie. – yuro