如何使用宏将Outlook邮件复制到Excel中

时间:2017-08-02 20:26:30

标签: excel vba excel-vba outlook

我已经搜索了所有谷歌,并且我已经尝试了一些堆栈溢出的建议来实现结果,但它们似乎无法实现我的具体目标。想知道这里是否有人可以帮助我。

我在呼叫中心工作,每小时都会收到代理生产力数据的电子邮件,并开始进行大量的手工操作。如何获取宏来复制电子邮件正文并自动将其粘贴到Excel工作表?或者我可以每天运行它。

这是数据外观的示例

每小时生产力

enter image description here

我需要复制的具体数据:

Agent Login | Agent Name | Average Talk Time | Total Talk Time | Calls Answered | Total ACW

如果可能,我还希望能够包括生产力的日期和时间吗?在图片上,你将能够看到它的时间。 (上午8:00 - 上午9:00)

我真的很感激任何帮助。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我认为这应该可以做你想要的。

Sub Extract()
 On Error Resume Next
 Set myOlApp = Outlook.Application
 Set mynamespace = myOlApp.GetNamespace("mapi")
 Set myfolder = myOlApp.ActiveExplorer.CurrentFolder

Set xlobj = CreateObject("excel.application.14")
 xlobj.Visible = True
 xlobj.Workbooks.Add
 xlobj.Worksheets("Sheet1").Name = "Statusmail"

'Set the header
 xlobj.Range("a" & 1).Value = "Absender"
 xlobj.Range("a" & 1).Font.Bold = "True"
 xlobj.Range("b" & 1).Value = "Date"
 xlobj.Range("b" & 1).Font.Bold = "True"
 xlobj.Range("c" & 1).Value = "Task"
 xlobj.Range("c" & 1).Font.Bold = True
 xlobj.Range("d" & 1).Value = "Planed-date"
 xlobj.Range("d" & 1).Font.Bold = True
 xlobj.Range("e" & 1).Value = "deadline"
 xlobj.Range("e" & 1).Font.Bold = True
 xlobj.Range("f" & 1).Value = "finished"
 xlobj.Range("f" & 1).Font.Bold = True
 xlobj.Range("g" & 1).Value = "time effort"
 xlobj.Range("g" & 1).Font.Bold = True
 xlobj.Range("h" & 1).Value = "description"
 xlobj.Range("h" & 1).Font.Bold = True

For i = 1 To myfolder.Items.Count
  Set myitem = myfolder.Items(i)
  msgtext = myitem.Body

  xlobj.Range("a" & i + 1).Value = myitem.To
  xlobj.Range("b" & i + 1).Value = myitem.ReceivedTime
  xlobj.Range("c" & i + 1).Value = msgtext


 Next
 End Sub

答案 1 :(得分:0)

这里有一些代码可以帮助您入门,它处理所有选定的消息,因此只选择一条感兴趣的消息

它将邮件正文类型和正文文本打印到“即时窗口”

Public Sub exploreEmailMessage()

    Dim currentItem As Object     ' drag "currentItem" onto "Watches" window, or use: right-click ... Add Watch

    For Each currentItem In Application.ActiveExplorer.Selection    ' check Watches window after this line is executed
        Stop
        If currentItem.Class = olMail Then

            Debug.Print "************************************"
            Debug.Print currentItem.ReceivedTime
            Debug.Print "************************************"
            Debug.Print Array("Unspecified", "Plain", "HTML", "RichText")(currentItem.BodyFormat)
            Debug.Print "************************************"
            Debug.Print currentItem.Body
            Debug.Print "************************************"
            Debug.Print currentItem.HTMLBody
            Debug.Print "************************************"   ' copy text in "immediate window" and paste into text editor for analysis

        End If
    Next
End Sub