2016-12-07 4 views
1

Я так новичок в Excel VBA. Я работаю над автоматизацией Outlook для получения данных из тела электронной почты Outlook, создания отчета и отправки в команду. Я только начал проверять некоторые рецепты получения данных из тела электронной почты Outlook и экспорта в Excel. Я попытался извлечения конкретных данных в теле сообщения электронной почты для экспорта в лист Excel, кажется, я продолжал получать Run Time Error 5 бега:Ошибка времени выполнения Microsoft Excel VBA 5

vText = Trim(M.SubMatches(1)) 

Э.Г.

Sub GetData() 
    Dim folders As Outlook.folders 
    Dim folder As Outlook.MAPIFolder 
    Dim iRow As Integer 
    Dim Pst_Folder_Name As String 
    Dim MailboxName As String 
    Dim subFolderName As String 
    Dim xlSheet As Object 
    Dim Reg As Object 
    Dim sText As String 
    Dim vText As Variant 
    Dim M As Object 
    Dim M1 As Object 

    MailboxName = "[email protected]" 

    Pst_Folder_Name = "My Folders" 

    subFolderName = "HTD Ticketing System" 

    Set folder = Outlook.Session.folders(MailboxName).folders(Pst_Folder_Name).folders(subFolderName) 
    If folder = "" Then 
     MsgBox "Invalid Data in Input" 
     GoTo end_lbl1: 
    End If 

    Sheets(1).Activate 

    For iRow = 1 To folder.Items.Count 
     Sheets(1).Cells(iRow, 1).Select 

     sText = folder.Items.Item(iRow).Body 

     Set Reg = CreateObject("VBScript.RegExp") 

     With Reg 
      .Pattern = "(http.)" 
     End With 

     If Reg.Test(sText) Then 
      Set M1 = Reg.Execute(sText) 
      For Each M In M1 
       vText = Trim(M.SubMatches(1)) 
      Next 
     End If 

     Sheets(1).Cells(iRow, 2) = vText 

     Set M = Nothing 
     Set M1 = Nothing 
     Set Reg = Nothing 
    Next iRow 

    end_lbl1: 

End Sub 

Благодаря

НИИСА

ответ

3

Коллекция SubMatches равна нулю индексируется так просто изменить, чтобы:

vText = Trim(M.SubMatches(0)) 

В настоящее время вы получите только первый матч, если вы хотите их всех вас необходимо Reg.Global = True.

Смежные вопросы