• 締切済み

ExcelにADのセキュリティグループのメンバーを表示させる

Visual Basicが全くわかっていないので、どなたか教えてください。 前任者が、OutlookのセキュリティグループのメンバーをExcelに表示させるVBSを残していきました。 とても便利に使っていましたが、ADのセキュリティグループに1500以上のユーザーが登録されているのに、 どういうわけか1500件までしか表示されません。どうやったらセキュリティグループのメンバー全員を吐き出すことができるんでしょうか? Dim objGroup, objExcel, iRow, strUser Set objGroup = GetObject("LDAP://cn=[セキュリティグループ名],ou=Distribution Groups,ou=XXXXX,dc=[domain]…") Set objExcel = CreateObject("Excel.Application") With objExcel .SheetsInNewWorkbook = 1 .Workbooks.Add .Visible = True .Worksheets.Item(1).Name = mid(objGroup.Name, instr(1,objGroup.Name,"=") + 1 ) 'set Worksheet name to that of the DL irow=1 For Each strUser in objGroup.Member Set objUser = GetObject("LDAP://" & strUser) .Cells(iRow,1) = objUser.CN irow=irow + 1 Next .Cells(iRow,1) = "Total users: " & irow - 1 .Columns(1).entirecolumn.autofit End With Set objExcel = Nothing Set objGroup = Nothing よろしくお願いいたします。

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

「ADSI 1500件」で検索。対処法も引っかかるかと。 違う原因かもしれませんが。

関連するQ&A

  • LDAPの区切り文字。

    WSHでLDAPを使用したいのですが、うまくいきません。 CN名(姓,名)にカンマが含まれているのでオブジェクトの取得に失敗します。どのように記述したらいいのでしょうか? LDAPの区切り文字をカンマ以外の区切り文字に変えたりできるのでしょうか? Set objUser = GetObject("LDAP://cn=LASTNAME, FirstName" & ", ou=Test, dc=Test")

  • セキュリティグループのメンバー一覧出力方法

    いつもお世話になります。 アクティブディレクトリ内に登録した全セキュリティグループのメンバーをcsvに出力したいのですが、 コマンドがわかりません。 まず、net group コマンドでセキュリティグループ グローバルの一覧をファイルに出力、 各グループごとの一覧を取得したいのですが、 ネットで見つけた下記コマンドのどの部分に各セキュリティグループ名を設定すればよいのでしょうか。 ※CN=SG_AccsessUser はセキュリティグループをあらわしていることはわかりました。 【とあるセキュリティグループのメンバーを出力するコマンドのサンプル】 C:\>ldifde -f c:\test.csv -d "CN=SG_AccsessUser,OU=FileAccess,OU=Groups ,OU=Group,OU=NK,DC=aa,DC=com" -u スクリプトはwscriptなどで作成する予定です。 どうぞ宜しくお願いします。

  • Active DirectoryユーザのADSIを使ったセキュリティグループの取得

    いつもお世話になります。 ADSIをつかってActive Directoryに登録されている1人のユーザから 登録されているセキュリティグループ一覧を取得する方法がわかる方 がおりましたらご教授頂きたく質問させて頂きました。 環境はWindows2000+ACCESS2000VBAです。 ちなみに何となくこんな感じというコードを書きます。 Dim objUser As IADsUser Set objUser = GetObject("'LDAP://' & 'CN='ユーザ名,' & 'CN=Users,' & 'DC=***,' & 'DC=co,' & 'DC=jp'") For Each ここがわかりません。 Next 別の方法でADOを使ったコードでも取得できそうですが、Where句のスキーマがわかりません。 下記のコードで登録ユーザのメールの一覧が取得できました。 Set Con = CreateObject("ADODB.Connection") Set Com = CreateObject("ADODB.Command") Con.Provider = "ADsDSOObject" Con.Open "Active Directory Provider" Set Com.ActiveConnection = Con Com.CommandText = "select name,mail from 'LDAP://DC=***, DC=co, DC=jp' WHERE " _ & "objectCategory='Person' " _ & "AND objectClass = 'user' " Set RS = Com.Execute While Not RS.EOF Debug.Print RS.Fields("Name") & " , " & RS.Fields("mail") RS.MoveNext Wend このSQLコマンドを select S_GROUP from *** where USER_ID に替えたいのです。 どちらかで結構なのでお願い致します。

  • LDAP-OS認証 グループによる制限

    LDAP認証の設定がされているLinuxサーバ(CentOS 5.1)へログインする 際に、特定のグループに所属しているユーザのみ許可するにはどうすれ ばよいのでしょうか? ・grp1のldif dn: cn=grp1,ou=Group,ou=People,dc=abc,dc=jp objectClass: posixGroup cn: grp1 gidNumber: 603 memberUid: user1 memberUid: user3 ユーザはuser1、user2、user3の3人がLDAPへ登録されています。 現在は3人ともログインできてしまう。 user1、user3のみログインできるようにしたい。 /etc/ldap.conf のpam_groupdnおよびpam_member_attributeを修正して みましたが挙動は変わりません。 pam_groupdn cn=grp1,ou=Group,ou=People,dc=abc,dc=jp pam_member_attribute memberUid どなたかお知恵をお貸しください。

  • ACCESSからEXCELに出力する際、時間がかかる。

    よろしくお願いします。 ACCESS VBA を使用して、既存のEXCELファイルにデータを出力しているのですが、すごく時間がかかってしまいます。件数が少ない時はそれほど気にならないのですが。時間短縮する方法を教えてください。 Sub S_ExportExcel_ADO() Dim CN As ADODB.Connection Dim rst As ADODB.Recordset Dim objExcel As Excel.Application Dim i As Integer Dim W_SQL As String On Error GoTo Err_S_ExportExcel_ADO Set objExcel = New Excel.Application objExcel.Workbooks.Open ("test.xls") objExcel.Worksheets("sheet1").Select Set CN = CurrentProject.Connection Set rst = New ADODB.Recordset W_SQL = "SELECT * FROM データ" rst.Open W_SQL, CN, adOpenKeyset, adLockReadOnly i = 1 Do Until rst.EOF objExcel.Cells(i, 4) = Trim("" & rst![データ1]) objExcel.Cells(i, 5) = Trim("" & rst![データ2]) objExcel.Cells(i, 6) = Trim("" & rst![データ3]) objExcel.Cells(i, 7) = Trim("" & rst![データ4]) objExcel.Cells(i, 9) = Trim("" & rst![データ5]) '***省略*** objExcel.Cells(i, 35) = Trim("" & rst![データ15]) objExcel.Cells(i, 36) = Trim("" & rst![データ16]) i = i + 1 rst.MoveNext Loop 'EXCEL保存 objExcel.ActiveWorkbook.Close objExcel.Quit rst.Close CN.Close Set rst = Nothing Set CN = Nothing Set objExcel = Nothing End Sub

  • Windows2003 セキュリティグループ

    Windows2003のActiveDirectoryを使用しています。 とあるセキュリティグループの参加メンバをCSVで吐き出したいのですが、 C:\>ldifde -f c:\test.csv -d "CN=SG_AccsessUser,OU=FileAccess,OU=Groups ,OU=Group,OU=NK,DC=aa,DC=com" と入力し吐き出したCSVを見るとmemberの部分が全てSIDで表示されています。 SIDではなく、DomainUserアカウントで表示させたいのですが、どのようにすれば良いでしょうか。 (ldifdeのオプションは何を追加すればよいでしょうか?) ちなみにCSVDEでは文字化けしてしまい読み取りが不可能でした。 アドバイスを宜しくお願い致します。

  • Excelオブジェクトの解放

    VBでExcelを編集しています。 下記コードを実行するとExcelがタスクに残ったままになります。 どうしたら解放されるでしょうか。 (処理は少し省略しています) Dim objExcel as Object Dim objExcelBook as Object Dim objExcelSheet as Object Set objExcel = CreateObject("excel.application") Set objExcelBook = objExcel.Workbooks.Open(パス, 0) Set objExcelSheet = objExcelBook .Sheets(シート名) With objExcelSheet.Range(Cells(1,2),Cells(3,2)).Borders(xlEgeBottom) .LineStyle = xlContinuous End With Set objExcelSheet = Nothing Set objExcelBook = Nothing Set objExcel = Nothing

  • このサイトのコードを利用したいです。

    http://gallery.technet.microsoft.com/scriptcenter/d73b2ae1-2997-4952-8946-18dea79ba827 「Set objUser = GetObject("LDAP://cn=ken myer, ou=Finance, dc=fabrikam, dc=com") Wscript.Echo objUser.WhenCreated」 知らないユーザーアカウントがあったため、作成日を知りたいと思ったところ上記のサイトの上記のコードにたどり着きました。しかし私にはこのコードの使い方が分かりません。どなたか使い方を教えてください。

  • お世話になります。

    お世話になります。 ActiveDirectoryについての質問です。 Server:WindowsServer2003 R2 全ユーザーアカウントの作成日付を取得し、指定場所へ出力したい。 (1)以下のプログラムでは全ユーザーアカウントを対象にすることができません。 全ユーザーアカウントを対象とするにはどのように記述すればよいでしょうか。 ▼プログラム Set objUser = GetObject("LDAP://cn=userName,ou=Kanri,ou=jsystem,dc=domain,dc=co,dc=jp") Wscript.Echo objUser.WhenCreated (2)保存場所の指定方法及び、ファイル形式を指定して、保存するにはどのように記述すればよいで  しょうか。 以上、2点よろしくお願い致します。

  • エクセルVBAとVBScript

    WinXP/Pro  エクセル2002使用です。 VBScriptで下記のメール送信のプログラムを作り、 それをエクセルVBA→BATファイル→VBScript(→エクセルVBAに戻る)という流れで自動化させましたが、下記のコードでは、現在進行中のエクセルVBAとは別のブックを作るのでうまくいきません。 (エクセルブックを2重起動してしまいます) Set objExcel =GetObject( "d:\auto\aaa.xls") Dim stradrs Dim strkk Dim strjikan with objExcel stradrs = .Worksheets("Sheet1").Cells(5,1).Value strkk= .Worksheets("Sheet1").Cells(4,1).Value strjikan = .Worksheets("Sheet1").Cells(4,2).Value end with Set objEmail = CreateObject("CDO.Message") objEmail.From = "***@***.com" objEmail.To = stradrs objEmail.Subject = "表題" objEmail.Textbody = "内容" objEmail.AddAttachment("d:\auto\" & strkk & strjikan & ".doc") objEmail.Send Set objEmail = nothing Set objExcel = nothing 目的は、最初に立ち上げている(VBScriptを呼び出したVBAを実行中の)エクセルから値を取得したいのです。 下記いずれかの方法によると思っています。 (1)エクセルVBAから直接VBScriptに引数で値を渡すことは可能でしょうか? (2)VBScriptからエクセルブックを起動させずに値を取得することは可能でしょうか? 値はテキスト文字です。 何卒よろしくお願いします。

専門家に質問してみよう