Vba 如何将10封最近发送的邮件下载到ms access中
我正在使用下面给定的代码将发送的项目下载到我的access数据库中。虽然代码可以工作,但它会在所有已发送邮件中循环,但我想在它对“已发送邮件”文件夹中的最后10项执行操作后停止循环。我知道我可以使用限制功能或执行直到,但我不清楚如何执行。您能帮我吗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
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
谢谢如果你喜欢这个答案,如果你能投票,我将不胜感激