AddContactFromOutlook macro

Status
Niet open voor verdere reacties.

emulink

Gebruiker
Lid geworden
14 mrt 2009
Berichten
8
Goedenmiddag,

Ik ben bezig met een database ( https://support.microsoft.com/en-us...template-9b164250-dcc7-4eec-9f4d-9cf3b2715afb ) waarbij ik gebruik wil maken van de macro AddContactFromOutlook, alleen wil ik meer velden gebruiken zoals; Department & Company. Dit wil mij echter niet lukken

Ik heb geprobeerd:
- De Macro om te zetten naar VBS en zo ook custom code toe te voegen.
- De veldnamen om te zetten naar de corresponderende veldnamen uit Outlook.

Iemand een idee wat ik nog meer kan doen?
 
Begin eens met een voorbeeldje erbij te zetten; ik sta niet te popelen om e.e.a. eerst zelf te moeten nabouwen.
 
Sorry, dacht er misschien te makkelijk over. Ik gebruik dus de een template van MS (Students Access database template). In het formulier Student List, zit een knop met de macro "AddContactFromOutlook". Deze knop werkt gewoon naar behoren (Opent dialoogvenster adresboek in Outlook) en kan mensen ook daadwerkelijk toevoegen. Hij vult echter alleen de velden: First Name, Last Name & Email Address in. Ik zou daar dus graag extra bestaande en ingevulde velden vanuit Outlook aan willen toevoegen.

- De knop zit dus in het formulier "Student List" en gebruikt een standaard Macro "AddContactFromOutlook"
- Dit formulier gebruikt de query "Students Extended"
- "Students Extended" gebruikt weer de tabel "Students"

Ik heb dus de macro's geprobeerd om te zetten naar VBS en daar eigen code aan toe te voegen: (BRON)
Code:
' CI is for ContactInfo
Enum CI
First
Last
Email
Company
JobTitle
WorkPhone
HomePhone
CellPhone
WorkFax
WorkAddress
WorkCity
WorkState
WorkZip
WorkCountry
WebPage
Comments

End Enum

' Each field map item maps between a field
' name in the Access table and a property
' name Access maps to Outlook and SharePoint
' contact field info.
Type FieldMap
prop As String
Field As String
End Type

' This Varible lists all the proeprties that
' can be mapped to Contact info. You fill
' it with the corresponding field names from
' your table.
Dim Map(CI.Comments) As FieldMap
Public Sub MakeContacts()

Dim strTable As String
Dim fm As FieldMap
Dim td As dao.TableDef
Dim db As dao.Database
Dim I As Integer
' -----------------------------------------------
' UPDATE THESE STRINGS
' to match the table and field names in
' your app. It is okay not to set some if you
' don't have an equivalent.

' Set this to your table name
strTable = "Customers"

' Set these to your field names
Map(CI.First).Field = "First Name"
Map(CI.Last).Field = "Last Name"
Map(CI.Email).Field = "E-mail Address"
Map(CI.Company).Field = "Company"
Map(CI.JobTitle).Field = "Job Title"
Map(CI.WorkPhone).Field = "Business Phone"
Map(CI.HomePhone).Field = "Home Phone"
Map(CI.CellPhone).Field = "Mobile Phone"
Map(CI.WorkFax).Field = "Fax Number"
Map(CI.WorkAddress).Field = "Address"
Map(CI.WorkCity).Field = "City"
Map(CI.WorkState).Field = "State/Province"
Map(CI.WorkZip).Field = "Zip/Postal Code"
Map(CI.WorkCountry).Field = "Country/Region"
Map(CI.WebPage).Field = "Web Page"
Map(CI.Comments).Field = "Notes"
' END OF STRINGS TO UPDATE
' -----------------------------------------------
' This the code to mark fields in
' your local table with the correct
' Outlook and SharePoint field names.
'
' You shouldn't need to change this.
SetupContactProps
Set db = CurrentDb
Set td = db.TableDefs(strTable)

' Set the table level property that tells Access
' this is a Contact table.
SetProp td, "WSSTemplateID", dbInteger, 105
' For each mapped field, set the correct
' contacts property.
For I = 0 To CI.Comments
fm = Map(I)
If Len(fm.Field) > 0 Then
SetProp td.Fields(fm.Field), "WSSFieldID", dbText, fm.prop
End If
Next

End Sub
' This code initializes the contact property
' names that Access uses to map contact info
' to SharePoint or Outlook.
'
' You shouldn't need to change this.
Sub SetupContactProps()

Map(CI.First).prop = "FirstName"
Map(CI.Last).prop = "Title"
Map(CI.Email).prop = "Email"
Map(CI.Company).prop = "Company"
Map(CI.JobTitle).prop = "JobTitle"
Map(CI.WorkPhone).prop = "WorkPhone"
Map(CI.HomePhone).prop = "HomePhone"
Map(CI.CellPhone).prop = "CellPhone"
Map(CI.WorkFax).prop = "WorkFax"
Map(CI.WorkAddress).prop = "WorkAddress"
Map(CI.WorkCity).prop = "WorkCity"
Map(CI.WorkState).prop = "WorkState"
Map(CI.WorkZip).prop = "WorkZip"
Map(CI.WorkCountry).prop = "WorkCountry"
Map(CI.WebPage).prop = "WebPage"
Map(CI.Comments).prop = "Comments"

End Sub

' This is a helper routine which sets a property
' value first checking to see whether one already
' exists.
Sub SetProp(o As Object, strProp As String, dbType As DataTypeEnum, oValue As Variant)
Dim p As dao.Property
On Error GoTo NotFound
Set p = o.Properties(strProp)
GoTo Found
NotFound:

Set p = CurrentDb.CreateProperty(strProp, dbType, oValue)
o.Properties.Append p
Found:
If p.Type = dbType Then
p.Value = oValue
Else
o.Properties.Delete (strProp)
Set p = CurrentDb.CreateProperty(strProp, dbType, oValue)
End If

Dit was echter niet succesvol. Ik heb ook geprobeerd te zoeken welke velden de Macro daadwerkelijk uit Outlook haalt, maar ik kan nergens achterhalen wat die Macro nou daadwerkelijk doet.
 

Bijlagen

  • Students.zip
    541,7 KB · Weergaven: 17
Ik kan jouw code nergens terugvinden in de db. Dat kan denk ik ook wel kloppen, want je hebt de sjabloon gepost, en niet jouw versie :).
 
Klopt, ik kan niet uploaden via het netwerk van mijn werk. Ik kon met pijn en moeite het sjabloon erin krijgen
 
Comprimeren en herstellen, en dan zippen. Dat werkt meestal wel. We wachten dan even tot morgen :).
 
Ik krijg de database niet geupload omdat de policies tegenwerken. Ik heb de template erop weten te krijgen omdat ik de URL gekopieerd en geplakt heb in het upload scherm. :confused:
 
Dan moet je even documenteren wat je precies gedaan hebt, en waar je die code hebt gebruikt. Want ik heb geen tijd om dat zelf allemaal uit te zoeken.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan