如何在VBA中获得所有即将到来的约会

时间:2015-01-15 12:17:21

标签: vba outlook

我需要添加一个进度条,用于将所有约会导出到带有宏的Outlook中的数据库。

这是我的VBA代码:

For Each appointment In objFolder.Items
     If appointment.BusyStatus = olOutOfOffice Then
         total = total + 1
     End If
Next

使用此代码,total会停留在0,因此我无法获得百分比。

我不知道如何使用调试器。我想看看变量在执行时是什么。

2 个答案:

答案 0 :(得分:0)

首先,请查看Getting Started with VBA in Outlook 2010文章。

您可以使用Items类的RestrictFind/FindNext方法,而不是遍历文件夹中的所有项目。他们将只允许找到符合您条件的项目。

答案 1 :(得分:0)

您没有提供足够的代码来查看问题所在。也许你没有指向日历。遵循代码模式,而不是试图提高效率......

Option Explicit

Sub countAp()
Dim objfolder As folder
Dim Appointment As AppointmentItem
Dim totalAll As Long
Dim total As Long

Set objfolder = Application.GetNamespace("mapi").GetDefaultFolder(olFolderCalendar)

For Each Appointment In objfolder.Items
    If Appointment.BusyStatus = olOutOfOffice Then
        totalAll = totalAll + 1
    End If
Next

Debug.Print "All Appointment.BusyStatus = olOutOfOffice: " & totalAll

Debug.Print "Processing..."

For Each Appointment In objfolder.Items
    If Appointment.BusyStatus = olOutOfOffice Then
        ' do something here
        Debug.Print Appointment.Subject
        total = total + 1
        Debug.Print " current total: " & Format(total, "000") & _
          "  Percentage Complete: " & Format(total / totalAll * 100, "##0.00")
    End If
Next

Debug.Print "Done"
End Sub

您会发现这有用的Debugging VBA Code