Adicione um lembrete no outlook para cada terceiro dia útil do mês usando vba ou de outra forma

2

Alguém por favor pode me ajudar a adicionar um lembrete no outlook 2010 para cada terceiro dia útil do mês usando o vba ou de outra forma. Eu tentei no MS Outlook 2010 apenas, mas sem sucesso.

Eu só quero que o dia útil (não um feriado nem um final de semana) seja definido como data do lembrete. O Outlook também seleciona os finais de semana, o que é um problema!

    
por Pegasus21 22.04.2014 / 14:57

2 respostas

1

Tente este VBa que eu escrevi para você ... Por favor, note que eu estou no formato de data UK usado no Reino Unido. O código abaixo não foi projetado para ser totalmente perfeito para suas necessidades (embora ele faça o que você quer), mas também lhe dá um ponto de partida para que você possa ajustar conforme necessário.

Sub CreateEvent() 

 ' ====================     UPDATE THE DATES BELOW and add all the public holidays
    Dim publicHolidayDates(0 To 1) As Date
    publicHolidayDates(0) = "5 / 5 / 2014" ' this is used for demo purposes. The third working day of May is 5th - I've pretended 5th is bank holiday and as such, the event is entered on the 6th
    publicHolidayDates(1) = "01/01/2015"    

    Dim checking As Boolean
    checking = True

    ' ====================    ENTER THE STARTING DATE
    Dim myDate As Date
    myDate = "1 / 5 / 2014"

    Dim dayToCheck As String

    Dim dayResult As Integer

    Dim thirdDayYet As Integer
    thirdDayYet = 0

    Dim thirdMonthYet As Integer
    thirdMonthYet = 0

    ' ====================     How many months into the future do you want to add it too (start with 1 just to see it add it to next month)?
    Dim numberOfMonthsToAddReminderToo As Integer
    numberOfMonthsToAddReminderToo = 2

    Do While (checking)

        dayToCheck = Format(myDate, "dddd")

        If (LCase(dayToCheck) <> "saturday" And LCase(dayToCheck) <> "sunday") Then

            Dim canContinue As Boolean
            canContinue = True
            For i = 0 To UBound(publicHolidayDates)
                If publicHolidayDates(i) = myDate Then
                    canContinue = False
                    Exit For
                End If

            Next i
            If (canContinue = True) Then
                thirdDayYet = thirdDayYet + 1
            End If
        End If

        If (thirdDayYet = 3) Then
            SaveToCalender(myDate)
            thirdMonthYet = thirdMonthYet + 1
            thirdDayYet = 0
            myDate = "01/" & month(myDate) & "/" & Year(myDate)
            myDate = DateAdd("m", 1, myDate)
        End If

        If (thirdMonthYet = numberOfMonthsToAddReminderToo) Then
            checking = False
        End If

        myDate = DateAdd("d", 1, myDate)

    Loop

End Sub

Sub SaveToCalender(ByVal myDate As Date)

    Dim oApp As Outlook.Application
    Dim oNameSpace As NameSpace
    Dim oItem As AppointmentItem

    On Error Resume Next
    ' check if Outlook is running
    oApp = GetObject("Outlook.Application")
    If Err <> 0 Then
        'if not running, start it
        oApp = CreateObject("Outlook.Application")
    End If

    oNameSpace = oApp.GetNamespace("MAPI")

    oItem = oApp.CreateItem(olAppointmentItem)

    ' ====================     UPDATE THE DETAILS BELOW with the appointment details
    With oItem

        .Subject = "This is the subject"
        .Start = myDate & " 09:00:00"
        .Duration = "01:00"

        .AllDayEvent = False
        .Importance = olImportanceNormal
        .Location = "Optional"

        .ReminderSet = True
        .ReminderMinutesBeforeStart = "10"

    End With

    oItem.Save()

    oApp = Nothing
    oNameSpace = Nothing
    oItem = Nothing
End Sub

Adicionei alguns comentários para saber onde você pode atualizar o código para 'your bits'. Espero que esteja tudo claro.

O que foi dito acima pode ser muito melhorado, mas, você conseguirá. No entanto, você precisará observar que os eventos que você está digitando não estão sincronizados, ou seja, vamos fingir que você quer mudar o assunto do evento. Você teria que fazer isso manualmente para cada evento que você tem no calendário. Não será atualizado automaticamente.

O acima é testado rapidamente, ele adicionou os eventos, mas pode haver bugs, etc., por favor, verifique você mesmo :)

E, novamente, antes de tentar adicionar 50 entradas, tente adicionar apenas 1 ou 2 primeiro para garantir que ele faça o que quiser!

    
por 22.04.2014 / 16:18
0

O Outlook tem uma funcionalidade inata para isso.

Selecione Agendar tarefa e clique no botão "Recorrência".

No quadro à direita, a segunda opção contém uma lista suspensa de "Dia da semana". Assim, você pode definir diretamente um lembrete de recuperação para o segundo ou terceiro dia da semana de cada mês.

    
por 12.09.2017 / 14:40