如果您发送了一封带有投票按钮的电子邮件,在收件人回复后,您可能需要统计投票结果并将其导出到 Excel 工作表中。因此,在本文中,我们将教您如何快速完成此操作。
Outlook 非常强大,甚至提供了“投票”功能。 我之前的文章“熟练使用 MS Outlook 进行投票已经教会了如何有效地使用它。此外,大多数情况下,投票结束后,您可能出于某些原因(例如想要打印统计数据)将投票统计数据导出到 Excel 工作表中。但 Outlook 默认情况下不支持此功能。因此,在下文中,我们将教您如何轻松实现这一点。

将电子邮件中的投票统计数据导出到 Excel 工作表
- 首先,启动您的 Outlook 应用程序。
- 然后,您应该在 Outlook 主窗口中按“Alt + F11”键按钮。
- 接下来,在“Microsoft Visual Basic for Applications”窗口中,启用“Microsoft Excel 对象库”。单击“工具”>“引用”。然后在弹出的对话框中,选中“Microsoft Excel 对象库”前面的复选框,最后单击“确定”。
- 之后,您可以插入一个新模块或打开一个未使用的模块。
- 随后,将以下 VBA 代码复制并粘贴到该模块中。
Sub ExportVotingStatistics _Excel ()
Dim objMail As Outlook.MailItem
Dim objRecipient As Outlook.recipient
Dim objVoteDictionary As Object
Dim varVotingCounts As Variant
Dim varVotingOptions As Variant
Dim varVotingOption As Variant
Dim i As Long
Dim objExcelApp As Excel.Application
Dim objExcelWorkbook As Excel.Workbook
Dim objExcelWorksheet As Excel.Worksheet
Dim nRow As Integer
Set objMail = Application.ActiveExplorer.Selection(1)
'Create a new excel worksheet
Set objExcelApp = CreateObject("Excel.Application")
Set objExcelWorkbook = objExcelApp.Workbooks.Add
Set objExcelWorksheet = objExcelWorkbook.Sheets(1)
'Fill in the predefined values
With objExcelWorksheet
.Cells.Font.Name = "Cambria"
.Cells(1, 1) = "Voting Results for Email:"
.Cells(1, 2) = Chr(34) & objMail.Subject & Chr(34)
.Cells(3, 1) = "Voting Options"
.Cells(3, 2) = "Voting Counts"
End With
Set objVoteDictionary = CreateObject("Scripting.Dictionary")
'get the default voting options
varVotingOptions = Split(objMail.VotingOptions, ";")
'Add the voting responses to the dictionary
For Each varVotingOption In varVotingOptions
objVoteDictionary.Add varVotingOption, 0
Next
'Add a custom voting response - "No Reply"
objVoteDictionary.Add "No Reply", 0
'Process the all voting responses
For Each objRecipient In objMail.Recipients
If objRecipient.TrackingStatus = olTrackingReplied Then
If objVoteDictionary.Exists(objRecipient.AutoResponse) Then
objVoteDictionary.Item(objRecipient.AutoResponse) = objVoteDictionary.Item(objRecipient.AutoResponse) + 1
Else
objVoteDictionary.Add objRecipient.AutoResponse, 1
End If
Else
objVoteDictionary.Item("No Reply") = objVoteDictionary.Item("No Reply") + 1
End If
Next
'Get the voting options and vote counts
varVotingOptions = objVoteDictionary.Keys
varVotingCounts = objVoteDictionary.Items
'Fill in the values in specific cells
nRow = 4
For i = LBound(varVotingOptions) To UBound(varVotingOptions)
With objExcelWorksheet
.Cells(nRow, 1) = varVotingOptions(i)
.Cells(nRow, 2) = varVotingCounts(i)
End With
nRow = nRow + 1
Next
'Save the new Excel file
objExcelWorksheet.Columns("A:B").AutoFit
strExcelFile = "E:\Voting Results " & Format(Now, "YYYY-MM-DD hh-mm-ss") & ".xlsx"
objExcelWorkbook.Close True, strExcelFile
MsgBox "Complete!", vbExclamation
End Sub
- 之后,为了访问方便,最好将新宏添加到快速访问工具栏中。
- 最终,您可以尝试一下。
- 首先,选择包含投票按钮的源电子邮件。
- 然后单击快速访问工具栏中的宏按钮。
- 此宏完成运行后,您可以浏览到预定义的本地文件夹,您将在其中看到一个新的 Excel 工作簿。
- 打开此 Excel 工作簿。 现在您将看到投票统计信息,如下图所示:
没有人可以彻底避免 Outlook 错误
尽管 Outlook 具有多种功能,但没有这样的功能可以帮助我们避免 Outlook 错误。 各种因素都可能导致 Outlook 错误。 例如,如果您经常不正确地退出 Outlook,您很可能会遭受 PST腐败. 在这种情况下,您别无选择,只能使用一些强大的工具来挽救您的 PST 文件,例如 DataNumen Outlook Repair. 由于其高回收率,它赢得了很多荣誉。
作者简介:
Shirley Zhang 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 腐败的中密度纤维板 和 outlook 修复软件产品。 欲了解更多信息,请访问 datanumen.com

