Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Вывод данных о пользователях в HTML & Excel


Автор: Karas51 2.6.2009, 14:19
У меня есть 2 скрипта:
1) для вывода заблокированных пользователей:

Код
Option Explicit

Const ADS_UF_ACCOUNTDISABLE = 2


Dim objExcel
Dim objWorkbook

Dim objConnection
Dim objCommand
Dim objRecordset
Dim intUAC

Dim strHTMLText
Dim intCounter

Dim objFSO
Dim objTS

Set objExcel      = WScript.CreateObject("Excel.Application")
Set objWorkbook   = objExcel.Workbooks.Add


Set objConnection = WScript.CreateObject("ADODB.Connection")
Set objCommand    = WScript.CreateObject("ADODB.Command")

objConnection.Open "Provider=ADsDSOObject;"
objCommand.ActiveConnection = objConnection
objCommand.CommandText      = _
    "<GC://dc=******,dc=***>;(objectCategory=User);userAccountControl,distinguishedName;subtree"

Set objRecordSet  = objCommand.Execute

strHTMLText = "<html><title>Отчет о заблокированных учетных записях</title><body>"
strHTMLText = strHTMLText & "<h1>Отчет о заблокированных учетных записях</h1>"

objWorkbook.Sheets(1).Cells(1, 1).Value = "Отчет о заблокированных учетных записях"

intCounter = 3

Do Until objRecordset.EOF
    'intUAC = objRecordset.Fields("userAccountControl")
    
    If objRecordset.Fields("userAccountControl") AND ADS_UF_ACCOUNTDISABLE Then
        strHTMLText = strHTMLText & objRecordset.Fields("distinguishedName") & "<br />"
        objWorkbook.Sheets(1).Cells(intCounter, 1).Value = objRecordset.Fields("distinguishedName")
        
        intCounter  = intCounter + 1
    End If
    
    objRecordset.MoveNext
Loop

strHTMLText = strHTMLText &  "Всего <b>" & intCounter  & "</b> заблокировано"
objWorkbook.Sheets(1).Cells(intCounter + 1, 1).Value = "Всего " & intCounter  & " заблокировано"

objConnection.Close

strHTMLText = strHTMLText & "</body></html>"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objTS  = objFSO.CreateTextFile("c:\disabled users.htm", True)

objTS.Write strHTMLText
objTS.Close

Set objTS  = Nothing
Set objFSO = Nothing

objWorkbook.SaveAs "c:\disabled_users.xls"
objExcel.Quit

Set objRecordSet  = Nothing
Set objCommand    = Nothing
Set objConnection = Nothing

Set objWorkbook   = Nothing
Set objExcel      = Nothing

WScript.Quit 0


2) Вывод пользователей с ограниченным временным доступом к сетевым ресурсам предприятия:

Код
Option Explicit

Dim objExcel
Dim objWorkbook

Dim strHTMLText
Dim intCounter

Dim objDomain
Dim objUser

Dim dtAccountExpirationDate

Dim objFSO
Dim objTS

Set objExcel      = WScript.CreateObject("Excel.Application")
Set objWorkbook   = objExcel.Workbooks.Add


strHTMLText = "<html><title>Отчет о bla-bla-bla</title><body>"
strHTMLText = strHTMLText & "<h1>Отчет о bla-bla-bla</h1>"

objWorkbook.Sheets(1).Cells(1, 1).Value = "Отчет о bla-bla-bla"

intCounter = 0

Set objDomain = GetObject("WinNT://********,domain") ' NetBIOS-имя домена
objDomain.Filter = Array("User")

On Error Resume Next

For Each objUser In objDomain
    If Not IsNull(objUser.AccountExpirationDate) Then
        If Err.Number = 0 Then
            WScript.Echo objUser.Name, objUser.AccountExpirationDate
            strHTMLText = strHTMLText & objUser.Name & ":" & objUser.AccountExpirationDate & "<br />"
            objWorkbook.Sheets(1).Cells(intCounter + 3, 1).Value = objUser.Name & ":" & objUser.AccountExpirationDate
            
            intCounter  = intCounter + 1
        Else
            Err.Clear
        End If
    End If
Next

On Error Goto 0

strHTMLText = strHTMLText &  "Всего <b>" & intCounter  & "</b> bla-bla-bla"
objWorkbook.Sheets(1).Cells(intCounter + 3 + 1, 1).Value = "Всего " & intCounter  & " bla-bla-bla"

strHTMLText = strHTMLText & "</body></html>"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objTS  = objFSO.CreateTextFile("c:\disabled users2.htm", True)

objTS.Write strHTMLText
objTS.Close

Set objTS  = Nothing
Set objFSO = Nothing

objWorkbook.SaveAs "c:\disabled_users2.xls"
objExcel.Quit

Set objDomain     = Nothing

Set objWorkbook   = Nothing
Set objExcel      = Nothing

WScript.Quit 0


Они оба создают файл HTML & EXCEL, вся проблемма в том что когда создает HTML, то выводит по строчкам пользователей и с CN,OU и т.д., а в EXCEL в 1 ячейке также записывает всю информацию. Мне надо чтобы в HTML выводило в виде таблицы и без вывода CN,OU(в смысле вывод только имени пользователя и подразделения!), а в EXCEL в каждой ячейке свой вид данных.Помогите пожалуйста!!!!!!!!! У меня ничего не получается  smile  smile


Автор: mihanik 6.6.2009, 12:58
ну...
Начнём по порядку...
Сначала с html.

Структуру таблицы в html знаешь? 

Код

<table>
<tr>
<td></td> <td></td> ... <td></td>
</tr>
<tr>
<td></td> <td></td> ... <td></td>
</tr>
...
<tr>
<td></td> <td></td> ... <td></td>
</tr>
</table>


Попобуй сначала разобраться с этим...

Автор: Karas51 11.6.2009, 09:35
Это я все знаю, но у меня при создании скрипта весь HTML-код пишется в строчку, а сейчас еще и ошибку какую-то скрипт начал выдовать в строчке-
Код

Set objRecordset = objCommand.Execute

Можешь подсказать как исправить?
Мне очень надо, а я ничего понять не могу почему выводится ошибка и т.д.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)