Vanuit Access taak in Outlook toewijzen aan collega

  • Onderwerp starter Onderwerp starter btl
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

btl

Gebruiker
Lid geworden
9 dec 2004
Berichten
32
Hallo,

Ik ben bezig om vanuit Access een taak aan te maken in Outlook. Dit is prima mogelijk in je eigen takenlijst of in de takenlijst van een specifiek iemand. Hiervoor gebruik ik de volgende code:

Option Compare Database


Private Sub Knop21_Click()

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 NowDate As Date
Dim DateEnd As Date
Dim DateDif As Long
Dim Task As Object
Dim ToContact As Object

Set Task = Outlook.CreateItem(olTaskItem)
NowDate = Now()
DateEnd = Apptdate

If DateAdd("d", -1, DateEnd) >= 1 Then
DateEnd = DateAdd("d", -1, DateEnd)
Else
End If

Task.Subject = Apptnotes
Task.Body = "Bekijk het complete verslag in de database."
Task.Assign
Set ToContact = Task.Recipients.Add("jij@wij.nl")
Task.DueDate = DateEnd
Task.Importance = (olImportanceHigh)
Task.ReminderSet = True
Task.Save

End If

End Sub


Maar in plaats van een vast emailadres in de code op te nemen (jij@wij.nl) wil ik dat deze verwijst naar een in het formulier/tabel in te vullen emailadres. Dit lukt me echter niet en kan online ook geen codes vinden hiervoor.

Ik heb al een tip gekregen om dit aan te passen naar:

Function OutlookTask()
Dim NowDate As Date, DateEnd As Date
Dim Task As Outlook.TaskItem

Set Task = Outlook.CreateItem(olTaskItem)
NowDate = Now()
DateEnd = NowDate + 7
If DateAdd("d", -1, DateEnd) >= 1 Then
DateEnd = DateAdd("d", -1, DateEnd)
End If
With Task
.Subject = Me.ApptNotes
.Body = "Bekijk het complete verslag in de database."
.Assign
.Recipients.Add Me.Emailadres
.DueDate = DateEnd
.Importance = (olImportanceHigh)
.ReminderSet = True
.Save
End With

End Function

Maar hierbij heb ik de vraag: ik wil dit laten doen bij het klikken op een knop. Het lukt me nu nog niet om de event (on click) te combineren met bovenstaande functie.

Alvast bedankt!
 
Zou je je code willen opmaken met de CODE knop? Of, nog makkelijker, zet de code [/code] áchter je code en
Code:
 er voor.
Het antwoord is overigens simpel: zet in de knop bij de gebeurtenis <Bij klikken> de opdracht.
Krijg je zoiets:
[code]Private Sub Knop_CLick()
     OutlookTask
End Sub
 
De code ziet er uit als onderstaand. Ik krijg echter de melding dat er een syntaxisfout plaatsvindt en dat er een "=" wordt verwacht.

Code:
Private Sub Knop21_Click()
    OutlookTask ()

Dim NowDate As Date, DateEnd As Date
Dim Task As Outlook.TaskItem
    
    Set Task = Outlook.CreateItem(olTaskItem)
    NowDate = Now()
    DateEnd = NowDate + 7
    If DateAdd("d", -1, DateEnd) >= 1 Then
        DateEnd = DateAdd("d", -1, DateEnd)
    End If
    With Task
        .Subject = Me.Apptnotes
        .Body = "Bekijk het complete verslag in de database."
        .Assign
        .Recipients.Add Me.Emailadres
        .DueDate = DateEnd
        .Importance = (olImportanceHigh)
        .ReminderSet = True
        .Save
    End With
    

End Sub
 
Dat verbaast me niks; je hebt de Functienaam vervangen door een Knopnaam. En vervolgens roep je in de knopprocedure een functie aan (OutlookTask) die niet meer bestaat. Laat de Functie dus gewoon in tact, en zet in de actie van de knop de code die ik je eerder heb gegeven, dan moet het werken. Al kun je de complete code uit de functie ook best onder de knop hangen, als dat de enige plek is waar je de functie nodig hebt. In dat geval moet de regel Outlooktask () natuurlijk helemaal weg.
 
Dank u!

Het was lang geleden, dus mijn kennis is wat roestig merk ik. Ik heb het grotendeels werkend!

Code:
Option Compare Database

Private Sub Form_Load()
  DoCmd.GoToRecord , , acNewRec
End Sub

Private Sub Knop32_Click()
   OutlookTask
    DoCmd.Close
End Sub



Function OutlookTask()
 Dim NowDate As Date, DateEnd As Date
 Dim Task As Outlook.TaskItem

 Set Task = Outlook.CreateItem(olTaskItem)
 NowDate = Me.Apptdate
  DateEnd = NowDate + 7
 If DateAdd("d", -1, DateEnd) >= 1 Then
 DateEnd = DateAdd("d", -1, DateEnd)
 End If
 With Task
 .Subject = "acquisitieactie" & Me.Account
 .Body = Me.Apptnotes
 .Assign
 .Recipients.Add Me.emailadres1
 .Recipients.Add Me.emailadres2
 .Recipients.Add Me.emailadres3
 .DueDate = DateEnd
 .Importance = (olImportanceHigh)
 .ReminderSet = True
 .Save
 .Send
 
  End With
  
 End Function

Ik wil dus eventueel meerdere mensen een taak geven (meerdere emailadressen). Ik krijg op twee manieren een foutmelding:
* als ik niet alle drie de emailadressen toewijs (dus null waarde).
* als ik mijzelf een taak geef mag dat niet.

Is dat eenvoudig op te lossen met bovenstaande code? Anders ga ik gewoon verder zoeken naar een andere oplossing :)

Dank!
 
Dit:
Code:
Private Sub Form_Load()
  DoCmd.GoToRecord , , acNewRec
End Sub

zie ik echt ongelooflijk vaak voorbij komen in het forum, en ik heb dat dus in 20 jaar (maal tientallen databases) nog nooit gebruikt :). Nergens voor nodig namelijk, kun je op een veel betere manier regelen.
Maar dit terzijde... Je probleem is natuurlijk logisch; ik zou een string vullen met de ingevulde email adressen.
Code:
Function OutlookTask()
Dim NowDate As Date, DateEnd As Date
Dim Task As Outlook.TaskItem
[B][COLOR="#0000FF"]Dim sEmail As String
Dim i As Integer

    For i = 1 To 3
        If Not Me("emailadres" & i).Value & "" = "" Then
            If Not sEmail = "" Then sEmail = sEmail & ";"
            sEmail = sEmail & Me("emailadres" & i).Value
        End If
    Next i[/COLOR][/B]
    Set Task = Outlook.CreateItem(olTaskItem)
    NowDate = Me.Apptdate
    DateEnd = NowDate + 7
    If DateAdd("d", -1, DateEnd) >= 1 Then
        DateEnd = DateAdd("d", -1, DateEnd)
    End If
    With Task
        .Subject = "acquisitieactie" & Me.Account
        .Body = Me.Apptnotes
        .Assign
[B][COLOR="#0000FF"]        .Recipients.Add sEmail[/COLOR][/B]
        .DueDate = DateEnd
        .Importance = (olImportanceHigh)
        .ReminderSet = True
        .Save
        .Send
    End With
  
 End Function
 
Steeds een stapje verder, maar voordat ik dit ga proberen zal ik het DOEL uitleggen.

Binnen ons bedrijf gaan we geregeld op gesprek. Daar maken we verslagje van. Daar kunnen meerdere acties uit komen (meestal 1 tot enkele). Ik wil die acties kunnen toekennen aan een persoon (in hun takenlijst) of aan mijzelf. Ik heb in het formulier ook een vak emailadres (nu dus even meerdere). Daarin wordt aangegeven WIE de taak moet uitvoeren. Deze verschilt namelijk altijd!

Is de door jou aangedragen oplossing (met een ingevulde string) hiervoor geschikt? Dan ga ik daar graag mee aan het stoeien!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan