2017-01-10 73 views
1

我需要一個Excel VBA來搜索已發送郵件中已發送郵件中的Outlook 2010郵件,並將其作爲「任務已完成」(有時,主題可能會有其他文本任務於07/01/2017完成或任務已完成01/09/2017);如果找到,則從指定的路徑中打開一個excel文件。VBA從Excel中搜索已發送郵件中的Outlook 2010郵件

我在谷歌搜索中發現了這個outlook VBA代碼,它顯示了搜索到的郵件,但是我希望代碼在excel中運行通配符搜索選項並打開excel。

我試圖尋找與通配符「*」的主題,如「任務已完成*」和「任務已完成上&格式(Date,‘日/月/年’)」爲其中我得到一個語法錯誤/編譯錯誤

Sub Test() 

Dim olApp As Outlook.Application 
Dim olNs As NameSpace 
Dim Fldr As MAPIFolder 
Dim olMail As Outlook.MailItem 
Dim i As Integer 

Set olApp = New Outlook.Application 
Set olNs = olApp.GetNamespace("MAPI") 
Set Fldr = olNs.GetDefaultFolder(olFolderSentMail) 
i = 1 

For Each olMail In Fldr.Items 
    If InStr(olMail.Subject, "Task Completed on 07/01/2017") <> 0 Then 
     olMail.Display 

     i = i + 1  
    End If  
Next olMail 

End Sub 

我使用的Office 2010

+0

讓我知道,如果你在試圖代碼我的答案如下,如果它對你有用 –

+0

謝謝先生,我試過你的代碼,但我不想在Excel中存儲任何電子郵件ID或發送日期。其實我想在excel中運行一個宏,在任務完成時搜索Outlook郵件。我想讓你的代碼在excel中運行。請幫助我如何做到這一點,或者有什麼辦法可以在Excel中的window.open事件中調用此代碼? – Mallur

+0

「子試驗() 昏暗olApp作爲Outlook.Application 昏暗olNs正如名稱空間 昏暗FLDR作爲MAPIFolder 昏暗olMail作爲Outlook.MailItem 昏暗我作爲整數 集olApp =新Outlook.Application 集olNs = olApp.GetNamespace ( 「MAPI」) 集FLDR = olNs.GetDefaultFolder(olFolderSentMail) I = 1 對於每個olMail在Fldr.Items 如果InStr函數(olMail.Subject, 「任務完成」)和InStr函數(olMail.SentOn,格式(Date - 1,「mm/dd/yyyy」))<> 0然後 olMail.Display i = i + 1 End If Next olMail E nd Sub' 我編輯了一些代碼,它在Outlook中工作正常,但可以在Excel VBA編輯器中使用此代碼並從那裏運行? – Mallur

回答

2

爲了遍歷發送郵件夾中的所有物品,包括你可能有日曆事件,使用Dim olMail As Object (而不是AS Outlook.MailItem)。

要在電子郵件標題的某處查找「任務已完成」字符串,請使用If olMail.Subject Like "*Task Completed*" Then(在搜索字符串前後添加通配符*)。

我添加了兩行代碼,即輸出的所有匹配列A和B列電子郵件到您的工作表

代碼

Option Explicit 

Sub Test() 

Dim olApp As Outlook.Application 
Dim olNs As Namespace 
Dim Fldr As MAPIFolder 
Dim olMail As Object 
Dim i As Integer, j As Integer 

Set olApp = New Outlook.Application 
Set olNs = olApp.GetNamespace("MAPI") 
Set Fldr = olNs.GetDefaultFolder(olFolderSentMail) 

i = 1 
For Each olMail In Fldr.Items 
    ' check if mail subject contains "Task Completed" in the email title 
    If olMail.Subject Like "*Task Completed*" Then 
     'Range("A" & i).Value = olMail.Subject ' <-- output email name to column A 
     'Range("B" & i).Value = olMail.SentOn ' <-- output email sent date to column B 
     olMail.Display ' show email through Excel 
     i = i + 1 
    End If 
Next olMail 

End Sub 
相關問題