naam selecteren in algemene adressenlijst via invulformulier

Status
Niet open voor verdere reacties.

jackfish

Gebruiker
Lid geworden
10 sep 2010
Berichten
297
Beste mensen,

Ik wil een invulformulier maken voor onze receptie zodat zij gestandaardiseerd informatie van de beller verzamelen. Nadien moeten ze de informatie mailen naar de behandelaar.

Mijn vraag is, welke code ik moet gebruiken onder de knop "aan" (geadresseerde) om een naam te kunnen selecteren uit de algemene adressenlijst van Outlook?

Daarmee wil ik voorkomen dat, na het invullen van het invulformulier, de receptionist(e) nog een bewerking moet uitvoeren om het betreffende e-mailadres te selecteren voordat de mail verstuurd kan worden.


Alvast dank voor het meedenken!

Gr Jackfish
 
Werk je met Exchange?
Daar heeft Microsoft zelf een voorbeeld van en dat kun je hier lezen:
http://msdn.microsoft.com/en-us/library/office/bb175075(v=office.12).aspx

Als je niet met Exchange werkt is dit een mooi voorbeeld.
Uiteraard gebruik je dan niet Excel maar doe je met de opgehaalde informatie wat je zelf wilt:
http://www.jpsoftwaretech.com/link-excel-cells-to-outlook-data-fields/

Zo heb je samen met je Word vraag wel even wat te doen maar ik zou met het mooie weer van dit weekend toch andere bezigheden kiezen ;)
 
Laatst bewerkt:
Code:
Sub Read_Contact_Email()
    c00 = "Fullname" 'hier komt de naam uit het adresboek
    With CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(10).Items(c00)
        c01 = .Email1Address
    End With
    MsgBox c01
End Sub
 
Dank allen voor de reacties, het mooie weer heeft mij ver van de pc gehouden :confused:. Ik ga het komende weekeinde met jullie suggesties aan de slag!

Gr jackfish
 
jackfish,

goeie namiddag! Aangezien ik zelf receptionist ben lijkt me dit een leuke topic om volgen :) heb je een voorbeeldbestandje van je opzet? :)
 
Hallo Warme bakkertje, ik probeer mij met de nagels hogerop in VBA te werken maar kom nog niet verder zonder hulp. As ik jouw script met een tweede cmd-button op het invulformulier probeer op te starten krijg ik een foutmelding: -2147221233 (8004010f) tijdens uitvoering: De bewerking is mislukt. Kan een object niet vinden.
Onderstaand het script bij het invulformulier zoals ik dat tot nu toe gebruik. Heb je misschien aanwijzingen om de knop 'aan' werkend te krijgen?

Private Sub CMD_aan_Click()

End Sub

Private Sub CMD_verzenden_Click()

If OptionButton1 = True Then
TXTgeslacht = "meneer "
ElseIf OptionButton1 = False Then
TXTgeslacht = "mevrouw "
End If

Dim sMail(6) As String
Dim OMail As Outlook.MailItem
sMail(1) = Me.TxtNaam
sMail(2) = Me.TxtGeboortedatum
sMail(3) = Me.TXTnaamcollega
sMail(4) = Me.TXTtelefoonnummer
sMail(5) = Me.TXTonderwerp
sMail(6) = Me.TXTgeslacht
Unload Me

Set OMail = Outlook.CreateItem(olMailItem)
OMail.To = sMail(0)

With OMail
.BodyFormat = olFormatHTML
.Display
sSignature = OMail.HTMLBody
.Subject = "Verzoek om terug te bellen: " & TXTgeslacht.Text & " " & TxtNaam.Text & " geboren " & TxtGeboortedatum.Text
.HTMLBody = "<p style='font-family:trebuchet MS;font-size:13'>" & "Hallo " & TXTnaamcollega.Text & "," & "<br>" _
& "<br>" & "Zou je " & TXTgeslacht & TxtNaam.Text & ", " & " geboren " & TxtGeboortedatum.Text & ", " & "terug willen bellen?" & " Als reden werd opgegeven: " & "'" & TXTonderwerp.Text & "'" & "<br>" & "Cliënt is bereikbaar onder: " & TXTtelefoonnummer.Text & sSignature
End With

End Sub

In de bijlage Spiesse het formulier dat ik gemaakt heb met code.

Gr jackfish

Bekijk bijlage Invulformulier - terugbelverzoek.zip
 
Laatst bewerkt:
Ik heb zojuist het laatste stukje script bij elkaar 'geharkt' en het werkt. Er zijn nog wel een paar kleine dingen maar daarvoor is misschien een nieuwe vraag beter. Allen dank voor de hulp! Jackfish

Private Sub CMD_aan_Click()
Dim cdoSession, cdoAddressBook, olkRecipients, objAE
On Error Resume Next

Set cdoSession = CreateObject("MAPI.Session")
cdoSession.Logon "", "", False, False
Set olkRecipients = cdoSession.AddressBook(, "Global Address List", 0, False)
For Each objAE In olkRecipients
TXTnaamcollega.Text = objAE.Name
Next
Set olkRecipients = Nothing
cdoSession.Logoff
Set cdoSession = Nothing

End Sub

Private Sub CMD_verzenden_Click()
Dim OMail As Outlook.MailItem
On Error Resume Next

If OptionButton1 = True Then
TXTgeslacht = "meneer "
ElseIf OptionButton1 = False Then
TXTgeslacht = "mevrouw "
End If

Dim sMail(6) As String
sMail(1) = Me.TxtGeboortedatum
sMail(2) = Me.TXTnaamcollega
sMail(3) = Me.TXTtelefoonnummerVast
sMail(4) = Me.TXTtelefoonnummerMobiel
sMail(5) = Me.TXTonderwerp
sMail(6) = Me.TXTgeslacht
Unload Me

Set OMail = Outlook.CreateItem(olMailItem)
OMail.To = sMail(0)

With OMail
.To = TXTnaamcollega.Text
.BodyFormat = olFormatHTML
.Display
sSignature = OMail.HTMLBody
.Subject = "Graag terug bellen; " & TXTgeslacht.Text & "" & TxtNaam.Text & ", " & "geboren " & TxtGeboortedatum.Text
.HTMLBody = "<p style='font-family:trebuchet MS;font-size:13'>" & "Hallo Collega," & "<br>" _
& "<br>" & "Zou je " & TXTgeslacht & TxtNaam.Text & ", " & " geboren " & TxtGeboortedatum.Text & ", " & "terug willen bellen?" & "<br> " & "<br>" & "" _
& " Als reden werd opgegeven: " & "'" & TXTonderwerp.Text & "'" & "<br>" & "<br>" & "Cliënt is telefonisch bereikbaar onder: " & TXTtelefoonnummerVast.Text & " - " & TXTtelefoonnummerMobiel.Text & sSignature
.Send
End With

End Sub
 
Dit volstaat op voorwaarde dat de naam in TXTnaamcollega.Text exact dezelfde schrijfwijze heeft als in het adresboek.
Maak er desnoods een Combobox van zodat je kan verwijzen naar een bereik met de correcte namen van collega's.
Code:
Private Sub CMD_verzenden_Click()
    TXTgeslacht.Text = IIf(OptionButton1, "meneer ", "mevrouw ")
    With CreateObject("Outlook.Application")
        With .GetNamespace("MAPI").GetDefaultFolder(10).Items(TXTnaamcollega.Text)
            c01 = .Email1Address
        End With
        With .CreateItem(0)
            .To = c01
            .BodyFormat = olFormatHTML
            .Display
            sSignature = .HTMLBody
            .Subject = "Verzoek om terug te bellen: " & TXTgeslacht.Text & " " & TxtNaam.Text & " geboren " & TxtGeboortedatum.Text
            .HTMLBody = "<p style='font-family:trebuchet MS;font-size:13'>" & "Hallo " & TXTnaamcollega.Text & "," & "<br>" _
            & "<br>" & "Zou je " & TXTgeslacht & TxtNaam.Text & ", " & " geboren " & TxtGeboortedatum.Text & ", " & "terug willen bellen?" & _
            " Als reden werd opgegeven: " & "'" & TXTonderwerp.Text & "'" & "<br>" & "Cliënt is bereikbaar onder: " & TXTtelefoonnummer.Text & sSignature
        End With
    End With
    Unload Me
End Sub
 
Professioneel Warme bakkertje, efficiënter en overzichtelijker. Probleem is inderdaad wisselingen in personeelsbestand en uitzendkrachten bij de receptie. Ik werk er zelf niet, heb geen zicht op alle mutaties van de locatie en krijg niet structureel tijd om dit bij te houden. Ofwel ik ben dan gebonden aan de code (met uitzondering van TXTgeslacht omdat die efficiënter is) die ik bij elkaar geharkt heb.

Gr Jackfish
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan