Van Access naar Outlook agenda klein foutje in code

Status
Niet open voor verdere reacties.

Fuser149

Gebruiker
Lid geworden
13 feb 2012
Berichten
33
Ik heb een code gevonden op internet waarmee ik een record in Access automatisch opneemt in de outlook agenda via ene druk op deze knop. Dit lukt perfect, enkel als Outlook gesloten is komt het er niet in, m.a.w. als ik op de knop duw en outlook staat open komt hij in de agenda anders niet kan iemand dit probleem verhelpen?

Hier is de code die ik aan de knop heb gehangen:
Code:
Private Sub AddAppt_Click()
' Save record first to be sure required fields are filled.
DoCmd.RunCommand acCmdSaveRecord
' Exit the procedure if appointment has been added to Outlook.
If Me!AddedToOutlook = True Then
MsgBox "This appointment already added to Microsoft Outlook"
Exit Sub
' Add a new appointment.
Else
Dim outobj As Outlook.Application
Dim outappt As Outlook.AppointmentItem
Set outobj = CreateObject("outlook.application")
Set outappt = outobj.CreateItem(olAppointmentItem)
With outappt
.Start = Me!ApptDate & " " & Me!ApptTime
.Duration = Me!ApptLength
.Subject = Me!Appt
If Not IsNull(Me!ApptNotes) Then .Body = Me!ApptNotes
If Not IsNull(Me!ApptLocation) Then .Location = _
Me!ApptLocation
If Me!ApptReminder Then
.ReminderMinutesBeforeStart = Me!ReminderMinutes
.ReminderSet = True
End If
.Save
End With
End If
' Release the Outlook object variable.
Set outobj = Nothing
' Set the AddedToOutlook flag, save the record, display a message.
Me!AddedToOutlook = True
DoCmd.RunCommand acCmdSaveRecord
MsgBox "Appointment Added!"
Exit Sub
AddAppt_Err:
MsgBox "Error " & Err.Number & vbCrLf & Err.Description
Exit Sub
End Sub

Please HELP!
 
Je hebt in het andere draadje een functie staan die dat checkt: Function isAppThere(appName) . Doet-ie het niet?
 
Je hebt in het andere draadje een functie staan die dat checkt: Function isAppThere(appName) . Doet-ie het niet?

Moet ik deze functie in mijn code toevoegen?
Ik zie deze functie niet staan in mijn huidige code maar als hij er staat doet hij het niet nee!

alvast bedankt!
 
Je hebt in het andere draadje een functie staan die dat checkt: Function isAppThere(appName) . Doet-ie het niet?

Ik weet nu wat je bedoelt heb het geprobeerd maar hij geeft foutmelding functie is niet gedeclareerd kan je deze functie in mijn code plakken zoals jij denkt dat hij wel zou werken?

alvast bedankt!
 
De functie kan je niet in die code plakken, want het is een zelfstandige functie. Als die functie op een aparte module staat, (en volgens het andere draadje is dat nu zo) zou hij moeten werken als je hem aanroept. Met de code hierboven zou het er dan zo uitzien:

Code:
    If Me!AddedToOutlook = True Then
        MsgBox "This appointment already added to Microsoft Outlook"
        Exit Sub
    Else
        Dim olApp As Outlook.Application
        Dim OutAppt As Outlook.AppointmentItem
        If isAppThere("Outlook.Application") = False Then            ' Outlook is not open, create a new instance
        Set OutObj = CreateObject("Outlook.Application")
        Else            ' Outlook is already open--use this method
            Set olApp = GetObject(, "Outlook.Application")
        End If
        Set OutAppt = olApp.CreateItem(olAppointmentItem)
Overigens zou ik niet Early binding en Late binding door elkaar heen gebruiken; in je andere voorbeeld werk je met Late binding, en dat zou ik hier ook doen.
 
De functie kan je niet in die code plakken, want het is een zelfstandige functie. Als die functie op een aparte module staat, (en volgens het andere draadje is dat nu zo) zou hij moeten werken als je hem aanroept. Met de code hierboven zou het er dan zo uitzien:

Code:
    If Me!AddedToOutlook = True Then
        MsgBox "This appointment already added to Microsoft Outlook"
        Exit Sub
    Else
        Dim olApp As Outlook.Application
        Dim OutAppt As Outlook.AppointmentItem
        If isAppThere("Outlook.Application") = False Then            ' Outlook is not open, create a new instance
        Set OutObj = CreateObject("Outlook.Application")
        Else            ' Outlook is already open--use this method
            Set olApp = GetObject(, "Outlook.Application")
        End If
        Set OutAppt = olApp.CreateItem(olAppointmentItem)
Overigens zou ik niet Early binding en Late binding door elkaar heen gebruiken; in je andere voorbeeld werk je met Late binding, en dat zou ik hier ook doen.

Ja de code had ik intussen gevonden het enige wat ik nog niet snap is hoe ik een functie in een aparte module zet en deze dan oproep in mijn code? Als ik dit weet ben ik opweg naar het programmeren. Ik probeer ook zelf zoveel mogelijk maar is niet gemakkelijk aangezien het soms echt chinees is...
Alvast bedankt voor u snelle reacties!
Wat moet jij goed zijn in programmeren zeg =D
 
Als je in het VBA scherm zit, kun je via <Invoegen>, <Module> een nieuwe module maken, mocht dat nodig zijn. Wat ik betwijfel, want je had die andere code in een module staan, en niet op het formulier.... Ik raak er confuus van! Volgens mij moet je de CLICK code verplaatsen naar je formulier, en kun je de FUNCTIE laten staan in de module. Maar vreemd is het dus wel dat je een knop die doorgaans bij een Knop wordt gemaakt in een module hebt gekregen....

P.S.
Het quooten van een bovenliggend bericht is niet nodig, en maakt je eigen bericht alleen maar onleesbaarder :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan