2017-08-03 27 views
2

我想将所选项目保存在Outlook中。使用下面的代码,我可以保存该项目,但它只保存第一个项目而不是所选项目。如何在Outlook VBA中保存所选项目

我需要更改什么才能保存所选项目?

Dim oOlApp As Object, objNmSpc As Object, ofldr As Object 
Dim myCopiedItem As Outlook.MailItem 
Dim myNewFolder As String 

Set oOlApp = GetObject(, "Outlook.Application") 
If Err.Number <> 0 Then 
    Set oOlApp = CreateObject("Outlook.Application") 
End If 
Err.Clear 

Set objNmSpc = oOlApp.GetNamespace("MAPI") 
Set ofldr = objNmSpc.PickFolder 
If Not ofldr Is Nothing Then MsgBox ofldr 

Dim oItem As Object 
For Each oItem In ofldr.Items 
    If oOlApp.ActiveExplorer.Selection.Item(1) = True Then 
     oItem.SaveAs Sheet1.Range("V5").Value & oItem.Subject & ".msg", olMSG 
     match.Offset(, 7).Value = oItem.SenderName & "-" & oItem.Subject & "-" & oItem.ReceivedTime 
     match.Offset(, 8).Value = VBA.Environ("Username") & "- " & VBA.Now 
     Exit Sub 
    End If 
Next oItem 

回答

0

下面的行不会没有错误

If oOlApp.ActiveExplorer.Selection.Item(1) = True Then 

另外,你在呼唤Exit sub,这意味着只能不断得到处理一个项目上运行。

绝对没有理由循环浏览文件夹中的所有项目。将环路更改为以下内容

For Each oItem In oOlApp.ActiveExplorer.Selection 
     oItem.SaveAs Sheet1.Range("V5").Value & oItem.Subject & ".msg", olMSG 
     match.Offset(, 7).Value = oItem.SenderName & "-" & oItem.Subject & "-" & oItem.ReceivedTime 
     match.Offset(, 8).Value = VBA.Environ("Username") & "- " & VBA.Now 
Next oItem 
相关问题