【发布时间】:2020-06-28 14:20:20
【问题描述】:
我浏览了许多 Outlook 论坛,但无法找出符合我要求的正确代码。
我有群组邮箱,我们经常收到主题行 "Request ID 691941: Call Lodged" 的邮件,这里 691941 随着邮箱中的请求不断变化,并且剩下的都是一样的。
我想要的是;
当我的宏看到只有主题行包含“Request ID xxxxxx: Call Lodged”的新邮件时,它应该继续阅读组邮箱,其余邮件可以忽略
-
从邮件正文中,它应该只将这些字段复制到 excel。
i) 请求 ID 691941(在此仅应将 691941 复制到 Excel)
ii) 严重性级别:Sev2(此处仅应将 Sev2 复制到 Excel)
iii) 产品:FINCORE(在此仅应将 FINCORE 复制到 Excel)
iv) 客户:FINATS(此处仅应将 FINATS 复制到 Excel)
v) 日期和时间:收到此邮件的日期和时间
复制到 Excel 的指定列中。
我有以下代码,但在第 12 行和第 46 行给出错误
Sub Test()
Dim myFolder As MAPIFolder
Dim Item As Variant 'MailItem
Dim xlApp As Object 'Excel.Application
Dim xlWB As Object 'Excel.Workbook
Dim xlSheet As Object 'Excel.Worksheet
Dim xlRow As Long
Dim Keys
Dim Lines() As String
Dim I As Long, J As Long, P As Long
Dim myNamespace As Namespace
Set myFolder = Application.GetNamespace("MAPI").Folders("Finacle Global Helpdesk").Folders("Inbox")
'Set myFolder = myNamespace.Folders("Finacle Global Helpdesk").Folders("Inbox")
Const strPath As String = "D:\book.xlsx" 'the path of the workbook
'Define keywords
Keys = Array("Request ID", "Severity Level:", "Product:", _
"Customer:")
'Try access to excel
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If xlApp Is Nothing Then
Set xlApp = CreateObject("Excel.Application")
If xlApp Is Nothing Then
MsgBox "Excel is not accessable"
Exit Sub
End If
End If
On Error GoTo 0
'Add a new workbook
Set xlWB = xlApp.Workbooks.Open(strPath)
Set xlSheet = xlWB.Sheets("sheet1")
'Write the header
With xlSheet
xlRow = 1
For I = 0 To UBound(Keys)
.Cells(xlRow, I + 1) = Keys(I)
Next
.Cells(xlRow, UBound(Keys) + 2) = "Subject"
End With
'Access the outlook inbox folder
'Set myFolder = myNamespace.Folders("Finacle Global Helpdesk").Folders("Inbox")
'Visit all mails
For Each Item In myFolder.Items
If myItem.Class = olMail Then
'Is the subject similar?
If Item.Subject Like "Request ID : Call Lodged" Then
'Get all lines from the mailbody
Lines = Split(Item.Body, vbCrLf)
'Next line in excel sheet
xlRow = xlRow + 1
xlSheet.Cells(xlRow, UBound(Keys) + 2) = Item.Subject
'Visit all lines
For I = 0 To UBound(Lines)
'Search all keywords in each line
For J = 0 To UBound(Keys)
P = InStr(1, Lines(I), Keys(J), vbTextCompare)
If P > 0 Then
'Store the right part after the keyword
xlSheet.Cells(xlRow, J + 1) = Trim$(Mid$(Lines(I), P + Len(Keys(J)) + 1))
Exit For
End If
Next
Next
End If
End If
Next
End Sub
感谢您的帮助
邮件正文如下所示
请求 ID 692248:呼叫已提交
至:xyzlksdksdk@skdmsd.com
cc:xyzlksdksdk@skdmsd.com尊敬的 Finacle 服务团队,
请求 ID 692248 已提交。
请求者:sjdhjksdj
严重性级别:Sev3-一些影响
请求状态:与受让人
问题描述:亲爱的xyz, sdlksdjksdlksjdlksd lkjdfklsdjfksdjf klkldsfksdfklsdfkldfkl
产品:FINCORE
客户:sjdskdjaskldasd
这里第一行是主题行,第二和第三行是收件人和抄送,剩下的是邮件正文
在邮件正文 692248 中的数字不断变化,并且 : 之后的所有值都会不断变化,因此应该捕获 : 之后的所有值
【问题讨论】:
-
你能添加一个电子邮件正文的例子吗
-
将 Option Explicit 放在代码顶部并修复 Item vs MyItem 问题。如果代码有效,请删除此问题。如果仍然存在问题,请说明错误和发生的行,而不是行号。
-
@0m3r 你能帮我复制正确的代码吗,我已经看到你的帖子与 Outlook 问题有关。如果您需要任何澄清,请告诉我。以下是邮件正文 亲爱的 Finacle 服务团队,请求 ID 692717 已提交。请求者:pscb_wipro 严重级别:2 请求状态:拥有所有权问题描述:2 产品:FINCORE 客户:NABARD
-
您使用的是哪个 Outlook 版本?
-
嗨,感谢您的快速回复,我正在使用 Outlook 2016,我必须从组邮箱中检索电子邮件(组邮箱的名称是“Finacle Global Helpdesk”和名为“Inbox”的子文件夹..我一定会的