我有一个需要Outlook和Excel连接的项目。我需要的是:
从Outlook收件箱中提取未读电子邮件的数据(收到日期,发件人,主题),然后粘贴到Excel中。请参阅以下代码。
将数据粘贴到Excel后,格式化提取的数据(我已经在Excel中有代码),然后保存Excel文件。
将提取的电子邮件标记为"阅读"
我的问题是:
有没有办法自动运行代码(例如:早上7点,下午2点和早上6点运行)?
如何将电子邮件设置为"阅读"提取信息后?
我如何仅选择"未读"要提取的电子邮件?
如何将Outlook代码连接到Excel代码并自动运行?
Outlook中用于提取数据的代码:
Sub Extract()
Set myOlApp = Outlook.Application
Set mynamespace = myOlApp.GetNamespace("mapi")
Set myfolder = myOlApp.ActiveExplorer.CurrentFolder
Set xlobj = CreateObject("Excel.Application")
xlobj.Visible = True
xlobj.workbooks.Add
'Set Heading
xlobj.Range("a" & 1).Value = "Received time"
xlobj.Range("b" & 1).Value = "Subject"
xlobj.Range("c" & 1).Value = "Importance"
xlobj.Range("d" & 1).Value = "Sender"
For i = 1 To myfolder.Items.Count
Set myitem = myfolder.Items(i)
xlobj.Range("a" & i + 1).Value = myitem.ReceivedTime
xlobj.Range("b" & i + 1).Value = myitem.Subject
xlobj.Range("c" & i + 1).Value = myitem.Importance
xlobj.Range("d" & i + 1).Value = myitem.SenderName
Next
End Sub
答案 0 :(得分:1)
未内置于Excel中。您可以在Windows(附件 - >系统工具 - >任务计划程序)中尝试计划任务来打开Excel文件(包括文件路径和名称的参数)。打开时,您需要让Excel运行该宏(右键单击,然后"查看代码"添加):
Private Sub Workbook_Open()
Call MacroThatYouWantToRun()
End Sub
更多详情 - > http://support.microsoft.com/kb/265113
我不确定这在Outlook中是否可以轻松完成。也许这会有所帮助:Outlook VBA - Run a code every half an hour
Outlook项目显然有一个" .UnRead"属性。对于要标记为已读的项目,只需将其设置为False即可。
我不是专家,但最糟糕的情况是,您可以循环浏览所有文件夹项并检查每个项目的属性。如果.UnRead属性设置为True,则执行命令,即将其某些属性复制到Excel。
此外:此处已讨论过运行Outlook文件夹中所有项目的方法:
我认为没必要。您可以从另一个应用程序访问一个应用程序 - 就像您在示例中所做的那样(Outlook - > Excel)。如果你想反过来(Excel - > Outlook),请考虑以下内容:
' This is running in Excel, not Outlook
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application")
With objOutlook
' Specify the commands you want to run in Outlook
End With
' First line in Excel you want the copied data to go
Dim ExcelCount As Integer
ExcelCount = 1
For i = 1 To myfolder.Items.Count
Set myitem = myfolder.Items(i)
' Only copy data from unread items
If myitem.UnRead = True Then
xlobj.Range("a" & ExcelCount).Value = myitem.ReceivedTime
xlobj.Range("b" & ExcelCount).Value = myitem.Subject
xlobj.Range("c" & ExcelCount).Value = myitem.Importance
xlobj.Range("d" & ExcelCount).Value = myitem.SenderName
' After copying the information, mark item as read
myitem.UnRead = False
' Increase Excel line count
ExcelCount = ExcelCount + 1
End If
Next
答案 1 :(得分:0)
您可能会发现How to automate Outlook from another program文章很有帮助。本文概述了使用自动化从另一个程序对Outlook进行编程。