2017-02-23 8 views
0

私は最初の電子メールの件名から情報を抽出する作業コードを持っています。あらかじめ定義されたテンプレートで電子メールに返信しているときにOutlook電子メール本文から単語を抽出する

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 
関連する問題