本文将教您如何利用 Outlook VBA 在发出会议邀请之前自动统计与会者人数。
类似于发送电子邮件前统计收件人数量,一些用户也希望在发送会议邀请前统计参会人数。通常,这样做是为了估算拟议会议的总成本,然后决定是否向参会者发送会议邀请。此外,由于 Outlook 允许用户将参会者设置为必选或可选,一些用户希望统计不同类型的参会者。如果还能统计会议资源和时长,那就更好了。虽然 Outlook 没有直接提供这样的功能,但您仍然可以使用 VBA 代码来实现。

发送会议邀请前自动统计与会者人数
- 首先,启动 Outlook 程序。
- 然后在 Outlook 主窗口中,按“Alt + F11”快捷键。
- 接下来就成功进入Outlook VBA编辑器了。 现在您需要找到并打开“ThisOutlookSession”项目。
- 随后,将以下 VBA 代码复制并粘贴到该项目中。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim objMeetingInvitation As Outlook.MeetingItem
Dim objMeeting As Outlook.AppointmentItem
Dim objAttendees As Outlook.Recipients
Dim objAttendee As Outlook.recipient
Dim lRequiredAttendeeCount, lOptionalAttendeeCount, lResourceCount As Long
Dim strMsg As String
Dim nPrompt As Integer
If TypeOf Item Is MeetingItem Then
Set objMeetingInvitation = Item
Set objMeeting = objMeetingInvitation.GetAssociatedAppointment(True)
Set objAttendees = objMeetingInvitation.Recipients
End If
lRequiredAttendeeCount = 0
lOptionalAttendeeCount = 0
lResourceCount = 0
'Count the required & optional attendees and resources, etc.
For Each objAttendee In objAttendees
If objAttendee.Type = olRequired Then
lRequiredAttendeeCount = lRequiredAttendeeCount + 1
ElseIf objAttendee.Type = olOptional Then
lOptionalAttendeeCount = lOptionalAttendeeCount + 1
ElseIf objAttendee.Type = olResource Then
lResourceCount = lResourceCount + 1
End If
Next
'Double check the meeting invitation details
strMsg = "Meeting Details:" & vbCrLf & vbCrLf & _
"Required Attendees: " & lRequiredAttendeeCount & vbCrLf & _
"Optional Attendees: " & lOptionalAttendeeCount & vbCrLf & _
"Resources: " & lResourceCount & vbCrLf & _
"Duration: " & GetDuration(objMeeting) & vbCrLf & vbCrLf & _
"Are you sure to send this meeting invitation?"
nPrompt = MsgBox(strMsg, vbExclamation + vbYesNo, "Double Check Meeting Invitation")
If nPrompt = vbYes Then
Cancel = False
Else
Cancel = True
End If
End Sub
Function GetDuration(objCurMeeting As AppointmentItem) As String
'Convert minute to hour
If objCurMeeting.Duration > 60 Then
GetDuration = Round(objCurMeeting.Duration / 60, 1) & " hours"
ElseIf objCurMeeting.Duration = 60 Then
GetDuration = Round(objCurMeeting.Duration / 60, 1) & " hour"
ElseIf objCurMeeting.Duration < 60 Then
GetDuration = objCurMeeting.Duration & " mins"
End If
End Function
- 之后,您需要签署此代码。
- 稍后确保您的 Outlook 允许数字签名的宏。
- 从现在开始,每次点击会议邀请中的“发送”按钮,您都会收到一条消息,显示与会者人数、资源和持续时间,如下图所示:
灵活应对令人沮丧的前景腐败
也许您以前遇到过 Outlook 问题,例如冻结、各种错误消息等。 幸运的是,Outlook 预装了收件箱修复工具,称为 扫描仪,能够解决小问题。 但如果问题很严重,您将需要重新使用更专业的工具,例如 DataNumen Outlook Repair.
作者简介:
Shirley Zhang 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 腐败的中密度纤维板 和 outlook 修复软件产品。 欲了解更多信息,请访问 datanumen.com

