SerBUser
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вроде проблему с экпортом данных из Excel в AD решил. Вот код: Код: 'Установка соединения с AD Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open 'Active Directory Provider" Set objCommand.ActiveConnection = objConnection 'Конец установки соединения с AD 'Открытие приложения Excel и указание файла для обработки Worksheets("Лист1").Activate 'Начало цикла перебора строк в Excel'e i = 11 Do Until Worksheets("Лист1").Cells(i, 1).Value = "" strCN = Worksheets("Лист1").Cells(i, 1).Value strAcc = Worksheets("Лист1").Cells(i, 2).Value pathcheck = "" 'Поиск и получение пути к пользователю в AD objCommand.CommandText = "<LDAP:// " & strCN & ">;(sAMAccountName=" & strAcc & ");AdsPath, cn;subTree" Set rs = objCommand.Execute Do While rs.EOF = False pathtouser = rs.Fields("AdsPath") pathcheck = pathtouser usercn = rs.Fields("cn") rs.MoveNext Loop 'Конец поиска и получение пути к пользователю в AD 'Измeнение свойст пользователя If pathcheck = "" Then 'Пользователь не найден-ничего не делаем Else Set objUser = GetObject(pathtouser) 'проверяем - если в Excel в 7 столбце (Компания) не пусто и если отличается от того, ' что у пользователя в AD - то изменяеи в AD данные If (Worksheets("Лист1").Cells(i, 7).Value <> "") Then If objUser.Get("company") <> Worksheets("Лист1").Cells(i, 7).Value Then objUser.Put "company", Worksheets("Лист1").Cells(i, 7).Value End If End If 'проверяем - если в Excel в 6 столбце (Подразделение) не пусто и если отличается от того, ' что у пользователя в AD - то изменяеи в AD данные If (Worksheets("Лист1").Cells(i, 6).Value <> "") Then If objUser.Get("Department") <> Worksheets("Лист1").Cells(i, 6).Value Then objUser.Put "Department", Worksheets("Лист1").Cells(i, 6).Value End If End If 'проверяем - если в Excel в 8 столбце (Должность) не пусто и если отличается от того, ' что у пользователя в AD - то изменяеи в AD данные If (Worksheets("Лист1").Cells(i, 8).Value <> "") Then 'If objUser.Get("title") <> Worksheets("Лист1").Cells(i, 8).Value Then objUser.Put "title", Worksheets("Лист1").Cells(i, 8).Value 'End If End If 'проверяем - если в Excel в 5 столбце (телефон) не пусто и если отличается от того, ' что у пользователя в AD - то изменяеи в AD данные If (Worksheets("Лист1").Cells(i, 5).Value <> "") Then 'If objUser.Get("telephoneNumber") <> Worksheets("Лист1").Cells(i, 5).Value Then objUser.Put "telephoneNumber", Worksheets("Лист1").Cells(i, 5).Value 'End If End If objUser.SetInfo End If 'Конец изминение свойст пользователя i = i + 1 Loop 'Конец цикла перебора строк в Excel'e MsgBox ("Выполнение завершено") | Работает все, кроме изменения телефона почему-то. Если заремить строки изменения телефонного номера - отрабатывет без проблем, если с номером - вылетает в debug на строке objUser.Put "telephoneNumber", Worksheets("Лист1").Cells(i, 5).Value В чем может быть косяк? |