Compartilhar via


Pesquise o calendário de compromissos dentro de um intervalo de datas que contenha uma palavra específica no assunto

Este tópico mostra um exemplo de código no Visual Basic for Applications (VBA) que localiza os compromissos no calendário padrão que ocorrem exatamente dentro de trinta dias corridos e que contêm a palavra "equipe" no assunto. Os resultados retornados incluem os compromissos recorrentes.

A FindAppts função no exemplo de código realiza a pesquisa usando duas consultas diferentes, primeiro procurando compromissos, incluindo compromissos recorrentes que começam e terminam dentro do intervalo de datas e, em seguida, pesquisa entre compromissos que atendem aos critérios de intervalo de datas que têm "equipe" no assunto. A seguir está um esquema das etapas:

  1. FindAppts primeiro define o período de tempo para consulta, atribuindo a hora de início, myStart, como 12:00 am na data do sistema atual, e a hora de término, myEnd, como trinta dias após o horário de início.

  2. Essa função obtém todos os itens na pasta de calendário padrão.

  3. Para incluir todos os itens de compromisso estritamente dentro do intervalo de datas, incluindo compromissos recorrentes, ele define Items.IncludeRecurrences como True e classifica os itens pela propriedade AppointmentItem.Start .

  4. Ele cria a primeira consulta para todos os compromissos que começam em ou após myStart, e termina em ou antes myEnd. Essa consulta é uma consulta Jet.

  5. Ela aplica a consulta a itens na pasta de calendário padrão, usando o método Items.Restrict .

  6. Ele cria a segunda consulta para o assunto de compromisso que contém a palavra "equipe". Ele usa a like palavra-chave para a correspondência de substring em uma consulta DASL (Pesquisa e Localização do DAV).

  7. Ela aplica a segunda consulta ao conjunto de compromissos que atendem aos critérios do intervalo de datas, retornados da primeira consulta.

  8. Ele classifica e imprime a hora de início de todos os compromissos finais retornados.

Observe que, se você quiser incluir itens de compromisso que se sobrepõem e não se enquadram estritamente no intervalo de datas específico, você deverá alterar a primeira consulta para uma que tenha compromissos iniciados ou antes myEndde , e termine em ou após myStart. Para obter mais informações, consulte Como pesquisar no calendário os compromissos que ocorrem parcialmente ou por completo em um dado período de tempo.

Sub FindAppts()

    Dim myStart As Date
    Dim myEnd As Date
    Dim oCalendar As Outlook.folder
    Dim oItems As Outlook.items
    Dim oItemsInDateRange As Outlook.items
    Dim oFinalItems As Outlook.items
    Dim oAppt As Outlook.AppointmentItem
    Dim strRestriction As String

    myStart = Date
    myEnd = DateAdd("d", 30, myStart)

    Debug.Print "Start:", myStart
    Debug.Print "End:", myEnd
          
    'Construct filter for the next 30-day date range
    strRestriction = "[Start] >= '" & _
    Format$(myStart, "mm/dd/yyyy hh:mm AMPM") _
    & "' AND [End] <= '" & _
    Format$(myEnd, "mm/dd/yyyy hh:mm AMPM") & "'"
    'Check the restriction string
    Debug.Print strRestriction
    Set oCalendar = Application.session.GetDefaultFolder(olFolderCalendar)
    Set oItems = oCalendar.items
    oItems.IncludeRecurrences = True
    oItems.Sort "[Start]"
    'Restrict the Items collection for the 30-day date range
    Set oItemsInDateRange = oItems.Restrict(strRestriction)
    'Construct filter for Subject containing 'team'
    Const PropTag  As String = "https://schemas.microsoft.com/mapi/proptag/"
    strRestriction = "@SQL=" & Chr(34) & PropTag _
        & "0x0037001E" & Chr(34) & " like '%team%'"
    'Restrict the last set of filtered items for the subject
    Set oFinalItems = oItemsInDateRange.Restrict(strRestriction)
    'Sort and Debug.Print final results
    oFinalItems.Sort "[Start]"
    For Each oAppt In oFinalItems
        Debug.Print oAppt.Start, oAppt.Subject
    Next
End Sub

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.