da vba Access è possibile inserire un appuntamento ricorrente in Outlook

Anonimo
2021-03-22T16:03:00+00:00

buongiorno ho creato routine per scrivere un appuntamento in outlook che prende dati da una maschera

FUNZIONA VA BENE

non so come fare   a inserire  un appuntamento RICORRENTE

così che da outlook se volessi eliminare un appuantmento e tutti i successivi a venire

perchè cliente cessato non devo cancellare scadenze una a una

GRAZIE

ne ho tanto bisogno

Monica

quanto segue va bene e fissa un appuntamento preciso

Private Sub cmdTrasferisciOutlook_Click()

Dim OutObj

Dim OutAppt

Set OutObj = CreateObject("Outlook.Application")

Set OutAppt = OutObj.createitem(1)

Dim Ora

With OutAppt

.start = Me.DataPosaPresunta & " 8:00:00"

.duration = Me.DurataPresunta * 60 * 40  'Format(4, "h.mm")

.subject = Me.Cliente & " " & Me.DestMerceCitta

.body = Me.idTipoCommessa

.reminderminutesbeforestart = 15

.reminderset = True

.Save

End With

Set OutAppt = Nothing

Set OutObj = Nothing

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2021-03-24T12:21:02+00:00

RecurrenceType e' di tipo Outlook.RecurrencePattern e non di tipo Outlook.AppointmentItem

Questa e' la documentazione in inglese per AppointmentItem:

https://docs.microsoft.com/it-it/office/vba/api...(vbaol11.chm301);k(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue

Questa per RecurrencePattern:

https://docs.microsoft.com/it-it/office/vba/api...(vbaol11.chm268);k(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue

In pratica per stabilire un appuntamento ricorsivo, ogni lunedi, devi scrivere qualcosa del genere:

Private Sub cmdTrasferisciOutlook_Click()

Dim OutObj As Object         ' ho aggiuntO AS Object che è megli
Dim OutAppt As Object       ' ho aggiuntO AS Object che è meglio
Dim pattern As Object

    Set OutObj = CreateObject("Outlook.Application")
    Set OutAppt = OutObj.CreateItem(1)  '1 sta per il primo comando che trovo in outlook menu Home
    Set pattern = OutAppt.GetRecurrencePattern
    pattern.RecurrenceType = olRecursWeekly
    pattern.PatternStartDate = #3/29/2021#
    pattern.PatternEndDate = #3/3/2022#
    pattern.DayOfWeekMask = olMonday 'se ti da errore, in strumenti > riferimenti, metti la spunta su Microsoft Outlook 16.0 Object Library e cambia olMonday con 2
    pattern.Duration = 180
    pattern.Interval = 1
    OutAppt.Subject = "Appuntamento dal dentista"
    OutAppt.Save

Set OutAppt = Nothing
Set OutObj = Nothing
End Sub

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-03-31T09:50:38+00:00

    Grazie tante Daniele

    funziona !

    devo prendermi tempo per capirla bene fino infondo

    e capire perchè   con il tuo primo esempio non mi va ancora

    MA TANTE GRAZIE DAVVERO

    monica

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-03-23T17:41:03+00:00

    Ciao Daniele 
    grazie tante per la tempestiva risposta 

    Ti posso confermare che il codice funziona e scrive corretto in outlook

    e l'end with c'è forse non rientrato bene non l'hai notato

    lo stesso ho migliorato definendo le variabile as Object

    ho provato a usare il tuo codice  

    sostituendo tutto quello che avevo nel With 

    ADESSO MI DA ERRORE !!! 

    CAPISCO CHE MANCA QUALCOSA 
    Comunque le paroline 

      .instance
      . occurrences

    sono parametri che mi servono  e che cercavo Grazie 

    sono molto interessata 
    SE PUOI rispondermi dove sbaglio 

    (la mia ricorrenza spesso è a fine mese sarà un mio secondo problema )

    Private Sub cmdTrasferisciOutlook_Click()

    Dim OutObj As Object         ' ho aggiuntO AS Object che è megli

    Dim OutAppt As Object       ' ho aggiuntO AS Object che è meglio

    Dim olRecursYearNth ' ho aggiunto io perchè mi diceva di dichiararla MA non so come definire la variabile perchè poi ese proprieta non supportata

    Dim olMonday '' ho aggiunto io perchè mi diceva di dichiararla MA non so come definire la variabile 

    Set OutObj = CreateObject("Outlook.Application")

    Set OutAppt = OutObj.createitem(1)  '1 sta per il primo comando che trovo in outlook menu Home

                                       'As Outlook.AppointmentItem

        With OutAppt

             ' Ogni n anni (con n indicao sotto nella proprieta intervallo).

            .RecurrenceType = olRecursYearNth 'o

             ' Avviene di Lunedi.

             .DayOfWeekMask = olMonday

             ' In giugno.

             .MonthOfYear = 6

             ' Avviene nel quinto oppure ultimo lunedi.

             .Instance = 5

             ' Ripetuto 3 volte.

             .Occurrences = 3

             ' Dura 180 minuti

             .Duration = 180

            ' Ogni 2 anni (per a RecurrenceType di olRecursYearNth).

             .Interval = 2

        End With

    Set OutAppt = Nothing

    Set OutObj = Nothing

    End Sub

     ho colto il tuo suggerimento e ho provato a rientrare  così è forse meglio ?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-03-22T19:39:08+00:00

    Ciao Monica,

    bentrovata nella community Microsoft, piacere di aiutarti, sono Daniele un consulente indipendente,

    sicura di aver incollato bene il codice?

    A parte non essere indentato correttamente manca l'End With.

    Ad ogni modo per creare un evento ricorrente basta specificarlo con

    '' Ogni n anni (con n indicao sotto nella proprieta intervallo). 
    .RecurrenceType = olRecursYearNth 'o
     ' Avviene di Lunedi. 
     .DayOfWeekMask = olMonday 
     ' In giugno. 
     .MonthOfYear = 6 
     ' Avviene nel quinto oppure ultimo lunedi. 
     .Instance = 5 
     ' Ripetuto 3 volte. 
     .Occurrences = 3 
     ' Dura 180 minuti  
     .Duration = 180 
    ' Ogni 2 anni (per a RecurrenceType di olRecursYearNth). 
     .Interval = 2 
    

    all'interno del blocco WITH,

    se non capisci cerca di copiare il codice corretto e metterlo qui in quanto quello che hai pubblicato non funziona.

    La risposta è stata utile?

    0 commenti Nessun commento