私は全く新しいので、いくつかのVBAプログラミングに問題があります。 Word/Excelでマクロ/ vbaアプリケーションを作成するタスクが与えられました。これは、姓、名字|電話番号|部署| Active Directoryのマネージャ。 私は最後の日にインターネットを検索してきましたが、実際には何も私のために働いていません。 現在のユーザー名/姓、電子メールなどを取得するテンプレートが提供されました。私はコードを私が今何をする必要があるに転送するのに苦労している。 これまで私が過去数時間にわたって試みてきたことは、Active Directoryからすべてのユーザーのリストを取得することでした。しかし、私が使用するコードは、私がインターネット上で見つけたVBScriptからのものでした。 VBAで動作させるためにできることを変更しましたが、実行しようとすると常にエラーが発生します。VBAでADの属性を持つすべてのユーザーのリストを取得
Sub test()
' get OU
'
strOU = "OU=Users,DC=domain,DC=com"
' connect to active directory
'
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
' create command
'
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
' execute command to get all users
'
objCommand.commandtext = "LDAP://" & strOU & ">;" & _
"(&(objectclass=user)(objectcategory=person));" & _
"adspath,distinguishedname,sAMAccountName;subtree"
On Error Resume Next
Set objRecordSet = objCommand.Execute
If Err.Number <> 0 Then MsgBox "Exception occured: " & Err.Description
On Error GoTo 0
'Dim RecordSet As New ADODB.RecordSet
Set objRecordSet = objCommand.Execute
'Show info for each user in OU
'
Do Until objRecordSet.EOF
'Show required info for a user
'
Debug.Print obj.RecordSet.Fields(“adspath”).Value
Debug.Print obj.RecordSet.Fields(“distinguishedname”).Value
Debug.Print obj.RecordSet.Fields(“sAMAccountName”).Value
' Move to the next user
'
obj.RecordSet.MoveNext
Loop
' Clean up
'
obj.RecordSet.Close
Set obj.RecordSet = Nothing
Set objCommand = Nothing
objConnection.Close
Set objConnection = Nothing
End Sub
と、この行ですべてが毎回停止します:私はそれだけでフリーズや単語をクラッシュIf Err.Number <> 0 Then MsgBox "Exception occured: " & Err.Description On Error GoTo 0
一部を削除する場合
Set objRecordSet = objCommand.Execute
を コードは次のようです。
これまでやったことありがとうございました。しかし、私は最初の行にエラーが表示されます: "変数" StrOUは "定義されていません"、そしていつも "objRecordSet.EOF"の部分で停止する前に、objRecordSetが空であるように見えます。 参考文献がない場合がありますか? 今私はいくつかの標準的な参照とMicrosoft ActiveXデータオブジェクト2.8ライブラリ、Microsoft DAO 3.6オブジェクトライブラリ、Active DSタイプライブラリ(その順番)を持っています。 – grantelbart
は、strOU行にいくつかの間違いやタイプミスがあります。それは今働くようです!しかし、それは言葉でそれらを印刷せずにユーザーを通過するだけです。私は何が欠けていますか? – grantelbart
私はCtrl + Gで開く必要があったエディタにすべてが表示されていることがありませんでした。すべて動作します!ヘルプAxelにもう一度感謝します! – grantelbart