Automatische voettekst (footer) op basis van windows login username

Status
Niet open voor verdere reacties.

Reynie

Gebruiker
Lid geworden
26 feb 2011
Berichten
8
Ik heb een Access Database, daarin zit één tabel (tbl_users).
In deze tabel zitten vier velden: login, Familienaam, Voornaam en Telnr
Het veld 'login' bevat identiek dezelfde waarde als de Windowslogin van de gebruikers.

Het volgende probeer ik te bereiken:
Bij het openen van een Word-template wordt de voettekst aangepast op basis van welke gebruiker inlogt is op de PC.

(GetUserName) = tbl_users (login)
then automatic fill-out corresponding fields in footer


Kortweg, een automatische voettekst met de juiste contactgegevens.

Iemand tips?
 
Laatst bewerkt:
Meestal wordt de Username (inlognaam) door Microsoft in de Gebruikersvelden gezet, maar die kunnen door de gebruiker zelf worden veranderd, dus dat is niet geheel veilig om te gebruiken. Met een macro in de AutoNew procedure kom je een heel eind.

Code:
Sub NetwerNaam()
Dim objNetWork As Object
Dim strUser As String

    Set objNetWork = CreateObject("Wscript.Network")
    strUser = objNetWork.UserName
    ActiveDocument.Sections(1).Footers(1).Range.Text = strUser
    ActiveDocument.Sections(1).Footers(1).Range.ParagraphFormat.Alignment = 1

End Sub
 
Het is niet gewoon de UserName in de voettekst.
Het einddoel is dat meerdere gebruikers elk op hun eigen PC dezelfde Word-template gebruiken, waarvan de voettekst automatisch ingevuld wordt -met hun gegevens- op basis van de globale Access tabel.
 

Bijlagen

Laatst bewerkt:
En dan begin je met de Userlogin op te halen met de bijvoorbeeld de code die ik heb gegeven.... Als je de overige gebruikers gegevens wilt toevoegen, zul je een database query moeten toepassen op de Access database; in Word heb je die gegevens namelijk niet staan. Met een ADO connectie naar de db kun je vervolgens in een query de gewenste gegevens ophalen en in je document zetten.
 
Om te beginnen kun je de hele functie die je nu hebt en aanroept, vervangen door één regel:
Code:
Sub Document_Open()
    MsgBox "De contactgegevens van " & Environ("Username") & " zijn toegevoegd!", vbInformation
End Sub
Verder zal ik in je voorbeeldje een voorlopige koppeling maken met een database; hij zal niet werken omdat ik de juiste paden/bestanden/tabellen etc. niet heb.
 
Dat 'Document_Open' venster is eigenlijk niet zo belangrijk.
 
Nieuwe aanpak.

Na héél veel zoeken heb ik dit gevonden:

Code:
Sub FillDependentFields()
  'Fill form fields based on selected employee
  'in wfEmployeeDropdown.
  Dim db As DAO.Database
  Dim rst As DAO.Recordset
  Dim doc As Document
  Dim strSQL As String
  Dim strPath As String
  Set doc = ThisDocument
  strSQL = "SELECT * FROM Employees " _
   & "WHERE LastName = '" _
   & doc.FormFields("wfLastName").Result _
   & "'"
  strPath = "T:\Sample\DynamicFormFill.mdb"
  Set db = OpenDatabase(strPath)
  Set rst = db.OpenRecordset(strSQL)
  'Ignore Null values from Access data.
  On Error Resume Next
  doc.FormFields("wfFirstName").Result = rst(1).Value
  doc.FormFields("wfTitle").Result = rst(2).Value
  doc.FormFields("wfTitleOfCourtesy").Result = rst(3).Value
  Set db = Nothing
  Set rst = Nothing
End Sub

Nu nog uitzoeken:
1) login (database veld) = Current Username
2) wat zijn die .Result en = rst(getal) dingen.
 
Je wijst de inhoud van drie velden toe aan drie FormFields. Mijn voorbeeldje van de Username kun je zonder meer gebruiken; ik heb er een msgbox van gemaakt zodat je kunt controleen wat er uitkomt, maar je kunt de waarde altijd toewijzen aan een variabele, om bijvoorbeeld de gegevens mee op te zoeken in je database.
 
doc.FormFields("wfFirstName").Result = rst(1).Value

wfFirstName wijst naar het WORD veld
Hoe laat ik .Result = rst(1).Value naar een veld in de ACCESS tabel verwijzen?
 
Bijna goed.

Met onderstaande code heb ik EINDELIJK een werkend document.

Code:
Private Sub Document_Open()
  
  'Fill form fields based on login employee
  Dim db As DAO.Database
  Dim rst As DAO.Recordset
  Dim doc As Document
  Dim strSQL As String
  Dim strPath As String
  Set doc = ThisDocument
  strSQL = "SELECT * FROM tbl_users " _
   & "WHERE Login = '" _
   & Environ("Username") _
   & "'"
  strPath = "C:\Data\Gegevensbank.mdb"
  Set db = OpenDatabase(strPath)
  Set rst = db.OpenRecordset(strSQL)
  'Ignore Null values from Access data.
  On Error Resume Next
  doc.FormFields("wfcorrespondent").Result = rst(6).Value
  doc.FormFields("wftel").Result = rst(9).Value
  doc.FormFields("wffax").Result = rst(10).Value
  doc.FormFields("wfemail").Result = rst(11).Value
  Set db = Nothing
  Set rst = Nothing
End Sub

Het probleem nu is:
Er kunnen géén FormFields in de Footer staan! aargh... :evil:
 
Ik zit hier al weken op te kauwen.
Blijkt dat enkel een 'STYLEREF' de mogelijkheid om een voettekst actief aan te passen.

Hoe vul ik die nu in?

It's driving me nuts...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan