【问题标题】:Email data exported to Excel - Sort by Received Date导出到 Excel 的电子邮件数据 - 按接收日期排序
【发布时间】:2020-06-21 07:19:32
【问题描述】:

我正在编写一个宏来将电子邮件数据导出到 Excel 文件以获取月度报告。

但是我意识到被提取的数据与日期不相符;都乱七八糟了。

有些邮箱有大量的电子邮件
因此考虑到效率问题,有什么方法可以按从新到旧的顺序获取数据?

以下是部分代码:

Dim msg As Outlook.MailItem
Dim nms As Outlook.NameSpace
Dim fld As Outlook.MAPIFolder
Dim itm As Object

'Select export folder
Set nms = Application.GetNamespace("MAPI")
Set fld = nms.PickFolder

'Open and activate Excel workbook.
Set appExcel = CreateObject("Excel.Application")
appExcel.Workbooks.Open (strSheet)
Set wkb = appExcel.ActiveWorkbook
Set wks = wkb.Sheets(1)
wks.Activate
appExcel.Application.Visible = True

'Copy field items in mail folder.
 For Each itm In fld.Items
'Check item type
If TypeName(itm) = "MailItem" Then
intColumnCounter = 1
Set msg = itm
intRowCounter = intRowCounter + 1
Set rng = wks.Cells(intRowCounter, intColumnCounter)
rng.Value = msg.To
intColumnCounter = intColumnCounter + 1
Set rng = wks.Cells(intRowCounter, intColumnCounter)
rng.Value = msg.SenderName
intColumnCounter = intColumnCounter + 1
Set rng = wks.Cells(intRowCounter, intColumnCounter)
rng.Value = msg.Subject
intColumnCounter = intColumnCounter + 1
Set rng = wks.Cells(intRowCounter, intColumnCounter)
rng.Value = msg.ReceivedTime
intColumnCounter = intColumnCounter + 1
Set rng = wks.Cells(intRowCounter, intColumnCounter)
rng.Value = GetLastVerb(msg)
End If
Next

【问题讨论】:

    标签: excel vba outlook


    【解决方案1】:

    您需要先对 Items 集合进行排序:

    set Items = fld.Items
    Items.Sort "ReceivedTime", true
    For Each itm In Items
      ...
    

    【讨论】:

    • 谢谢 :) 我想在导出所有内容后在 Excel 表中进行排序。显然,我忘记了对集合进行排序。
    猜你喜欢
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2020-07-30
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多