Método ExchangeUser.GetFreeBusy (Outlook)
Obtém um String que representa a disponibilidade do ExchangeUser por um período de 30 dias a partir da data de início, começando à meia-noite da data especificada.
Sintaxe
expression. GetFreeBusy
( _Start_
, _MinPerChar_
, _CompleteFormat_
)
Expressão Uma variável que representa um objeto ExchangeUser .
Parâmetros
Nome | Obrigatório/Opcional | Tipo de dados | Descrição |
---|---|---|---|
Start | Obrigatório | Date | A data da disponibilidade, começando à meia-noite. |
MinPerChar | Obrigatório | Long | Especifica a duração de cada intervalo de tempo em minutos. O padrão é 30 minutos. |
CompleteFormat | Opcional | Variant | Um valor True indica que uma granularidade menor de tempo ocupado será retornada na sequência de livre/ocupado. Um valor False indica que uma distinção entre apenas os horários disponíveis e ocupados será retornada. |
Valor de retorno
Um String que representa a disponibilidade do usuário do Exchange por um período de 30 dias da data de início, começando à meia-noite da data especificada. Cada caractere no String é um valor que indica se o usuário está disponível (0), e, opcionalmente, se um tempo ocupado está marcado provisório (1), fora do escritório (3), ou outros (2).
Exemplo
O seguinte exemplo Visual Basic for Applications (VBA) usa o método GetFreeBusy para recuperar as informações de livre/ocupado, com cada intervalo de tempo que representa um período de 60 minutos, para o gerente atribuído ao usuário atual. O exemplo então usa essas informações para calcular a data e hora em que o primeiro período livre ocorre e exibe essas informações na janela de depuração.
Sub GetManagerOpenInterval()
Dim oManager As ExchangeUser
Dim oCurrentUser As ExchangeUser
Dim FreeBusy As String
Dim BusySlot As Long
Dim DateBusySlot As Date
Dim i As Long
Const SlotLength = 60
'Get ExchangeUser for CurrentUser
If Application.Session.CurrentUser.AddressEntry.Type = "EX" Then
Set oCurrentUser = _
Application.Session.CurrentUser.AddressEntry.GetExchangeUser
'Get Manager
Set oManager = oManager.GetExchangeUserManager
If oManager Is Nothing Then
Exit Sub
End If
FreeBusy = oManager.GetFreeBusy(Now, SlotLength)
For i = 1 To Len(FreeBusy)
If CLng(Mid(FreeBusy, i, 1)) = 0 Then
'get the number of minutes into the day for free interval
BusySlot = (i - 1) * SlotLength
'get an actual date/time
DateBusySlot = DateAdd("n", BusySlot, Date)
'To refine this function, substitute actual
'workdays and working hours in date/time comparison
If TimeValue(DateBusySlot) >= TimeValue(#8:00:00 AM#) And _
TimeValue(DateBusySlot) <= TimeValue(#5:00:00 PM#) And _
Not (Weekday(DateBusySlot) = vbSaturday Or _
Weekday(DateBusySlot) = vbSunday) Then
Debug.Print oManager.name & " first open interval:" & _
vbCrLf & _
Format$(DateBusySlot, "dddd, mmm d yyyy hh:mm AMPM")
Exit For
End If
End If
Next
End If
End Sub
Confira também
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.