Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何将10封最近发送的邮件下载到ms access中_Vba_Ms Access_Outlook - Fatal编程技术网

Vba 如何将10封最近发送的邮件下载到ms access中

Vba 如何将10封最近发送的邮件下载到ms access中,vba,ms-access,outlook,Vba,Ms Access,Outlook,我正在使用下面给定的代码将发送的项目下载到我的access数据库中。虽然代码可以工作,但它会在所有已发送邮件中循环,但我想在它对“已发送邮件”文件夹中的最后10项执行操作后停止循环。我知道我可以使用限制功能或执行直到,但我不清楚如何执行。您能帮我吗 Private Sub sntml() Dim rst As DAO.Recordset Dim OlApp As Outlook.Application Dim stfldr As Outlook.MAPIFolder Dim stfldrItem

我正在使用下面给定的代码将发送的项目下载到我的access数据库中。虽然代码可以工作,但它会在所有已发送邮件中循环,但我想在它对“已发送邮件”文件夹中的最后10项执行操作后停止循环。我知道我可以使用限制功能或执行直到,但我不清楚如何执行。您能帮我吗

Private Sub sntml()
Dim rst As DAO.Recordset
Dim OlApp As Outlook.Application
Dim stfldr As Outlook.MAPIFolder
Dim stfldrItems As Outlook.Items
Dim Mailobject As Object
Dim db As DAO.Database
Dim dealer As Integer
Set db = CurrentDb
Set OlApp = CreateObject("Outlook.Application")
Set stfldr = OlApp.GetNamespace("Mapi").GetDefaultFolder(olFolderSentMail)
Set rst= CurrentDb.OpenRecordset("ogmls")
Set stfldrItems = stfldr.Items
For Each Mailobject In stfldrItems
    With rst
        .AddNew
        !Subject = Mailobject.Subject
        !from = Mailobject.SenderName
        !To = Mailobject.To
        !Body = Mailobject.Body
        !DateSent = Mailobject.SentOn
        .Update
        Mailobject.UnRead = False
    End With
End If
Next
Set OlApp = Nothing
Set stfldr = Nothing
Set stfldrItems = Nothing
Set Mailobject = Nothing
Set rst = Nothing
End Sub

您首先需要按收到的时间对电子邮件进行排序。然后阅读前10封电子邮件,完成后退出循环

Private Sub sntml()
Dim rst As DAO.Recordset
Dim OlApp As Outlook.Application
Dim stfldr As Outlook.MAPIFolder
Dim stfldrItems As Outlook.Items
Dim Mailobject As Object
Dim db As DAO.Database
Dim dealer As Integer
Dim emailCount as integer

Set db = CurrentDb
Set OlApp = CreateObject("Outlook.Application")
Set stfldr = OlApp.GetNamespace("Mapi").GetDefaultFolder(olFolderSentMail)
Set rst= CurrentDb.OpenRecordset("ogmls")
Set stfldrItems = stfldr.Items
stfldrItems.Sort "[ReceivedTime]"
emailCount=1
For Each Mailobject In stfldrItems

    With rst
        .AddNew
        !Subject = Mailobject.Subject
        !from = Mailobject.SenderName
        !To = Mailobject.To
        !Body = Mailobject.Body
        !DateSent = Mailobject.SentOn
        .Update
        Mailobject.UnRead = False
    End With
    emailCount = emailCount+1
    if emailCount > 10 then 
      Exit For
    end if

Next
Set OlApp = Nothing
Set stfldr = Nothing
Set stfldrItems = Nothing
Set Mailobject = Nothing
Set rst = Nothing
End Sub

谢谢如果你喜欢这个答案,如果你能投票,我将不胜感激