2017-02-23 3 views
0

초기 전자 메일 제목에서 정보를 추출하는 작업 코드가 있습니다.미리 정의 된 템플릿으로 전자 메일에 회신하는 동안 Outlook Email Body에서 단어 추출

Sub InitialNotif() 

Dim origEmail As MailItem 

Dim replyEmail As MailItem 

Dim INC1 As String 'For Serial Number 

Dim INo As Integer 'For Serial Number 

Dim LOC1 As String 'For Location 

Dim LoC As Integer 'For Location 

Dim SUMM As String 'For Summary 

Dim Sum As Integer 'For Summary 

Set origEmail = Application.ActiveWindow.Selection.item(1) 

Set replyEmail = Application.CreateItemFromTemplate("H:\Documents\Test P1-.oft") 

replyEmail.CC = "" 

replyEmail.HtmlBody = replyEmail.HtmlBody & origEmail.Reply.HtmlBody 

INC1 = origEmail.Subject 

INo = InStr(1, INC1, "SR2") 

LOC1 = origEmail.Subject 

LoC= InStr(1, LOC1, "|") + 10 

SUMM= origEmail.Subject 

Sum= InStr(1, SUMM, "Summary") + 30 

replyEmail.Subject = " <P1> - " & INC1 

replyEmail.HtmlBody = Replace(replyEmail.HtmlBody, "INC1", INC1) 

replyEmail.Display 

End Sub 

이제 이메일 본문에서 정보를 가져오고 싶습니다. 아래는 이메일의 본문 형식입니다. 나는 위의 정보가 필요

Serial Number: SR23443354 
Location: Canada 
Summary: Replacement request 

.otf 템플릿으로 대체합니다. 그래서 스크립트를 실행하면 필수 필드를 자동으로 채우거나 바꿔야합니다.

템플릿 바디 :

Serial Number: INC1 
Location: LOC 
Summary: SUMM 

나는 그것의 나에게 흩어져 형식으로 전체 이메일을주고 origEmail.bodyorigEmail.Subject를 교체했을 때.

+0

죄송합니다. – RKP

+0

누구든지 이메일 본문에서 문제를 가져올 수 있는지 확실하지 않습니다. 이제 이메일 본문에서 정보를 가져 오려고합니다. 제목에서 SR # & Issue를 가져올 수 있지만 위치 및 요약 정보는 내가 포함 할 수있는 이메일 본문에 있습니다. – RKP

+0

좋아요. 시도해 보겠습니다. 당신이 그 주제에서 얻은 정보는 무엇입니까? 이메일 제목을 보여줄 수 있습니까? – 0m3r

답변

0

변경 ActiveWindowActiveExplorer

MSDN Split Function

MSDN Replace Function

MSDN InStr Function

으로
Option Explicit 
Sub InitialNotif() 
    Dim OrigEmail As MailItem 
    Dim ReplyEmail As MailItem 
    Dim vText As Variant 
    Dim vItem As Variant 
    Dim SerialNum As String 
    Dim Location As String 
    Dim Summary As Variant 
    Dim i As Long 

    If Application.ActiveExplorer.Selection.Count = 0 Then 
     MsgBox ("No Item selected") 
     Exit Sub 
    End If 

    Set OrigEmail = Application.ActiveExplorer.Selection.Item(1) 
    Set ReplyEmail = Application.CreateItemFromTemplate("C:\Temp\Untitled.oft") 

    '// for the Subject 
    '// SR23443354|Replacement request = Bla Bla SR23443354|- Open 
    ReplyEmail.Subject = "Bla Bla " & "|" _ 
            & Split(OrigEmail.Subject, "|")(0) _ 
            & " - Open" 

    '// Process Mail body 
    '// Get the text of the message 
    '// and split it by paragraph 
    vText = Split(OrigEmail.Body, Chr(13)) ' Chr(13)) carriage return 

' '// Check each line of text in the message body 
    For i = UBound(vText) To 0 Step -1 

     '// locate the text relating to the item required 
     '// Serial Number: 
     If InStr(1, vText(i), "Serial Number") > 0 Then 
      '// Split text line From ":" 
      vItem = Split(vText(i), Chr(58)) ' Chr(58) = : 
      SerialNum = vItem(1) 
      Debug.Print SerialNum ' Print Immediate Window 
     End If 

     '// Location: 
     If InStr(1, vText(i), "Location") > 0 Then 
      vItem = Split(vText(i), Chr(58)) 
      Location = vItem(1) 
     End If 

     '// Summary: 
     If InStr(1, vText(i), "Summary") > 0 Then 
      vItem = Split(vText(i), Chr(58)) 
      Summary = vItem(1) 
     End If 
    Next 

' '// Now Update oft file 
    With ReplyEmail 
     .Body = Replace(.Body, "INC1", SerialNum) 
     .Body = Replace(.Body, "LOC", Location) 
     .Body = Replace(.Body, "SUMM", Summary) 
    End With 

    ReplyEmail.CC = "" 
    ReplyEmail.Display 

    Set OrigEmail = Nothing 
    Set ReplyEmail = Nothing 
End Sub