Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Word получение данных из AD (http://forum.oszone.net/showthread.php?t=338231)

mcintosh55 14-12-2018 09:51 2845875

Word получение данных из AD
 
Добрый день, есть скрипт на VBA для excel получение данных из AD, подскажите как такое-же можно провернуть для word.

Код:

Function GetADInfo(ByVal SearchField, ByVal SearchString, ByVal ReturnField)

Dim adoCommand, strDomain, objConnection

strDomain = "dc=Ваш_домен,dc=local"

Set objConnection = CreateObject("ADODB.Connection")

objConnection.Open "Provider=ADsDSOObject;"

Set adoCommand = CreateObject("ADODB.Command")

adoCommand.ActiveConnection = objConnection

adoCommand.CommandText = _
 "<LDAP://" & strDomain & ">;(&(objectCategory=" & "User" & ")" & _
 "(" & SearchField & "=" & SearchString & "));" & SearchField & "," & ReturnField & ";subtree"

Dim objRecordSet

Set objRecordSet = adoCommand.Execute

If objRecordSet.RecordCount = 0 Then

GetADInfo = "not found"

Else

GetADInfo = objRecordSet.Fields(ReturnField)
End If

objConnection.Close

Set objRecordSet = Nothing

Set objCommand = Nothing

Set objConnection = Nothing

End Function


Iska 14-12-2018 12:53 2845915

mcintosh55, я не вижу в приведённом коде ничего специфичного ни для Excel, ни даже для VBA в целом.

mcintosh55 14-12-2018 13:09 2845921

Цитата:

Цитата Iska
я не вижу в приведённом коде ничего специфичного ни для Excel, ни даже для VBA в целом. »

Я так понимаю надо сделать так:
1) написать функцию при запуске документа которая определит имя пользователя и положит данные в переменную А
2) дальше просто вызывать функцию выше и подсовываем ей переменную А и туда куда надо вывести
Я так понимаю как описано выше надо сделать?

Iska 14-12-2018 13:25 2845924

Цитата:

Цитата mcintosh55
Я так понимаю надо сделать так: »

Это Вы о чём сейчас? И как сие связано с:
Цитата:

Цитата mcintosh55
есть скрипт на VBA для excel получение данных из AD, подскажите как такое-же можно провернуть для word. »

?!

Опишите Вашу задачу.

mcintosh55 14-12-2018 13:34 2845927

есть форма в формате word при открытие документа в определенные поля нужно ввести данные из AD пользователя которые работает за компьютером

Iska 14-12-2018 14:24 2845938

Ага, примерно ясно.

Приведённый выше код функции GetADInfo, возвращающий либо строку "not found", либо объект типа Field, может быть непосредственно использован в любом приложении Microsoft Office, либо в WSH без каких-либо переделок.

Если Вас интересуют данные текущего пользователя, то можно попробовать сделать и проще, наподобие: User Information - VBScript - SS64.com, вместо того, чтобы лопатить запросом всю иерархическую базу AD.

mcintosh55 14-12-2018 16:28 2845969

А еще подскажите как связать "поле со списком" с полем "форматированный текста". Т.е. к примеру из "поле со списком" выбираю должность "директор" а в поле "форматированный текста" появляется фамилия

Iska 14-12-2018 17:27 2845978

Навряд ли подскажу — пробовать не на чем: у меня Microsoft Office 2003, а в нём была совершенно иная модель форм (если речь именно про формы в документе).

В моей версии нет поля вида «форматированный текст», есть просто текстовое поле. И всё, что можно сделать — написать макрос, наподобие:
Код:

Option Explicit

Sub Sample()
    Me.FormFields.Item("ТекстовоеПоле1").Result = Me.FormFields.Item("ПолеСоСписком1").Result
End Sub

и привязать его к полю «Поле со списком» («ПолеСоСписком1») следующим образом:
Скрытый текст

В Вашей версии в новой модели форм должно быть намного больше возможностей в этом плане.

mcintosh55 14-12-2018 18:52 2845999

если сможете файл как пример скиньте а то Я так не смог сделать

Iska 15-12-2018 01:26 2846052

Держите (ссылка будет доступна 7 дней). Но лучше пользуйте новую модель, которая доступна в Вашей версии Microsoft Office.


Время: 17:36.

Время: 17:36.
© OSzone.net 2001-