0

(更新)- 此脚本当前运行的方式是当您在活动电子邮件文件夹 (...@ .com/inbox) 或 (...@ .com/deleted) 中时,它会在该电子邮件文件夹上运行脚本。因此,Outlook 会自动知道选择了哪个电子邮件。我希望它始终这样做 thisemail@thisplace.com。这是通过 Outlook 的 VBA 运行的

所以我有这个简洁的 VBA 脚本,可以将我的收件箱文件夹从 Outlook 中选定的电子邮件地址导出到 Microsoft Excel。我想要的事情是进一步自动化,以便将电子邮件地址硬编码到脚本中。基本上我不想选择一个电子邮件地址来运行脚本,我只想让脚本始终在一个特定的电子邮件地址上运行。这是我的代码:

Sub Extract()


On Error Resume Next
Set myOlApp = Outlook.Application
Set myfolder = myOlApp.ActiveExplorer.CurrentFolder


Set xlobj = CreateObject("excel.application.14")
Set xlobjWbk = xlobj.Workbooks.Open("c:\Users\(my username)\Desktop\Example.xlsx")
xlobj.Visible = True
xlobj.EnableEvents = True

'Set Heading
xlobj.Range("a" & 1).Value = "Recieved Time"
xlobj.Range("b" & 1).Value = "Sender Email"
xlobj.Range("c" & 1).Value = "Subject"
xlobj.Range("d" & 1).Value = "Sender Name"
xlobj.Range("e" & 1).Value = "Body"

For i = 1 To myfolder.Items.Count
 Set myItem = myfolder.Items(i)
 msgtext = myItem.body

 xlobj.Range("a" & i + 1).Value = myItem.ReceivedTime
 xlobj.Range("b" & i + 1).Value = myItem.SenderEmailAddress
 xlobj.Range("C" & i + 1).Value = myItem.Subject
 xlobj.Range("d" & i + 1).Value = myItem.SenderName
 xlobj.Range("e" & i + 1).Value = msgtext

 Next
End Sub
4

1 回答 1

1

据我从您的示例中可以看到,我认为您针对活动的 Outlook 实例和选定的文件夹(myOlApp.ActiveExplorer.CurrentFolder)运行您的例程。

Outlook 文件夹具有 id 属性。你可以用它来实现你的目标。您可以通过 -> ActiveExplorer.CurrentFolder.EntryID 获得它。然后通过 -> Set targetFolder = GetNamespace("MAPI").GetFolderFromID(folderID) 使用它

于 2012-08-17T22:59:37.650 回答