Een vroegere collega van mij heeft een script geschreven waarin gegevens van de actieve gebruiker vanuit de Active Directory in een Word-document geplaatst worden middels bookmarks in dat Word document. Hier volgt een deel van het script:
In Word-documenten werkt het prima. Echter ... sinds kort gebruiken we ook een Excel-document waar gegevens uit de AD in tevoorschijn moeten komen. Mijn kennis van programmeren is niet echt heel groot, ik heb al diverse mogelijkheden geprobeerd, helaas nog zonder het gewenste resultaat. Is er iemand die mij er mee kan helpen?
| Code: |
| Sub FaxVoorblad() |
| Dim X |
| set X = createobject("WSCRIPT.Network") |
| dim U |
| dim vannaam |
| dim postOfficeBox |
| dim telephoneNumber |
| dim mobile |
| dim vanfaxnummer |
| dim aannaam |
| dim aantav |
| dim aanfaxnummer |
| dim aantalpaginas |
| dim datum |
| dim onderwerp |
| dim aanhef |
| dim tekst |
| dim groet |
| dim functie |
| dim mobiel |
| U=X.UserName |
| ADS_CHASE_REFERRALS_NEVER = &00 |
| ADS_CHASE_REFERRALS_SUBORDINATE = &20 |
| ADS_CHASE_REFERRALS_EXTERNAL = &40 |
| ADS_CHASE_REFERRALS_ALWAYS = &60 |
| ADS_SCOPE_BASE = 0 |
| ADS_SCOPE_ONELEVEL = 1 |
| ADS_SCOPE_SUBTREE = 2 |
| 'Get Distinguished Name for local domain |
| Set RootDSE = GetObject("LDAP://RootDSE") |
| domainDN = RootDSE.Get("DefaultNamingContext") |
| 'Initialize ADO connection |
| Set connection = CreateObject("ADODB.Connection") |
| connection.Provider = "ADsDSOObject" |
| connection.open |
| Set command = CreateObject("ADODB.Command") |
| Set command.ActiveConnection = connection |
| Command.Properties("Page Size") = 1000 |
| Command.Properties("Timeout") = 30 |
| Command.Properties("searchscope") = ADS_SCOPE_SUBTREE |
| Command.Properties("Chase referrals") = ADS_CHASE_REFERRALS_NEVER |
| Command.Properties("Cache Results") = False |
| 'via SQL de juiste velden kiezen. |
| command.CommandText = "SELECT sAMAccountName,title,mail,displayName,postOfficeBox,facsimileTelephoneNumber,st,telephoneNumber,mobile FROM " & "'LDAP://bedrijf-dc3/" & domainDN &"' WHERE objectcategory = 'user' AND sAMAccountName = '" & U & "'" |
| Set rs = command.Execute |
| Do Until rs.EOF |
| vannaam = rs.fields("displayName") |
| postcode = rs.fields("postOfficeBox") |
| telefoon = rs.fields("telephoneNumber") |
| mobiel = rs.fields("mobile") |
| vanfaxnummer = rs.fields("facsimileTelephoneNumber") |
| functie = rs.fields("st") |
| email = rs.fields("mail") |
| rs.MoveNext |
| Loop |
| 'Word applicatie opstarten en gelijk fax.doc inlezen |
| Set objword = CreateObject("Word.Application") |
| objword.visible = True |
| Set doc = objword.Documents.Add("\\bedrijf-dc2\bedrijf$\docalg\sjabloonfax.doc") |
| if (vannaam <> "") then |
| doc.Bookmarks("vannaam").Range.Text = vannaam |
| else |
| doc.Bookmarks("vannaam").Range.Text = "" |
| end if |
| if (vanfaxnummer <> "") then |
| doc.Bookmarks("vanfaxnummer").Range.Text = vanfaxnummer |
| else |
| doc.Bookmarks("vanfaxnummer").Range.Text = "" |
| end if |
| aannaam = InputBox("Fax gericht aan?") |
| doc.Bookmarks("aannaam").Range.Text = aannaam |
| aantav = InputBox("Ter attentie van?") |
| doc.Bookmarks("aantav").Range.Text = aantav |
| aanfaxnummer = InputBox("naar welk faxnummer?") |
| doc.Bookmarks("aanfaxnummer").Range.Text = aanfaxnummer |
| aantalpaginas = InputBox("Hoeveel pagina's") |
| doc.Bookmarks("aantalpaginas").Range.Text = aantalpaginas |
| doc.Bookmarks("datum").Range.Text = date() |
| onderwerp = InputBox("onderwerp?") |
| doc.Bookmarks("onderwerp").Range.Text = onderwerp |
| aanhef = InputBox("aanhef?") |
| doc.Bookmarks("aanhef").Range.Text = aanhef |
| tekst = InputBox("begeleidende tekst?") |
| doc.Bookmarks("tekst").Range.Text = tekst |
| groet = InputBox("groet?") |
| doc.Bookmarks("groet").Range.Text = groet |
| If (vannaam <> "") then |
| doc.Bookmarks("naamtwee").Range.Text = vannaam |
| else |
| doc.Bookmarks("naamtwee").Range.Text = "" |
| end if |
| If (functie <> "") then |
| doc.Bookmarks("functie").Range.Text = functie |
| else |
| doc.Bookmarks("functie").Range.Text = "" |
| end if |
| If (telefoon <> "") then |
| doc.Bookmarks("telefoonzaak").Range.Text = telefoon |
| else |
| doc.Bookmarks("telefoonzaak").Range.Text = "" |
| end if |
| If (mobiel <> "") then |
| doc.Bookmarks("mobiel").Range.Text = mobiel |
| else |
| doc.Bookmarks("mobiel").Range.Text = "" |
| end if |
| end Sub |
In Word-documenten werkt het prima. Echter ... sinds kort gebruiken we ook een Excel-document waar gegevens uit de AD in tevoorschijn moeten komen. Mijn kennis van programmeren is niet echt heel groot, ik heb al diverse mogelijkheden geprobeerd, helaas nog zonder het gewenste resultaat. Is er iemand die mij er mee kan helpen?