Ошибка RunTime на макросе VBA

Я работаю над кодом VBA, чтобы захватить текст из электронной почты Outlook и поместить его в лист Excel, который я создал. Я использую Excel 2010. Мой адрес электронной почты содержит следующую информацию:

Компания: ABC Company
Период занятий: 2013-10-29 по 2014-10-22

Я установил цикл For With, чтобы пройти через электронную почту и вставить название компании в столбец A, первую дату (2013-10-29) в столбце B и другую дату (2014-10-22) в столбце C. Когда я запускаю свой код, я получаю сообщение об ошибке: Ошибка времени выполнения 5: Неверный вызов или аргумент процедуры в следующей строке кода: vText2 = Trim(M.SubMatches(2))

Не могли бы вы сообщить мне, что я делаю неправильно. Часть моего кода ниже. Дайте мне знать, если мне нужно предоставить дополнительную информацию.

 sText = olItem.Body Set Reg1 = CreateObject("VBScript.RegExp") For i = 1 To 3 With Reg1 Select Case i Case 1 .Pattern(Company\s[:]+\s(\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*)\n)" .Global = False Case 2 .Pattern = "(Class Period\s*[:]+\s*([\d-\s]*))" .Global = False Case 3 .Pattern = "(through+\s*([\d-\s]*))" .Global = False End Select End With If Reg1.Test(sText) Then Set M1 = Reg1.Execute(sText) For Each M In M1 vText = Trim(M.SubMatches(1)) vText2 = Trim(M.SubMatches(2)) vText3 = Trim(M.SubMatches(3)) Next End If Next i xlSheet.Range("A" & rCount) = vText xlSheet.Range("B" & rCount) = vText2 xlSheet.Range("C" & rCount) = vText3 xlWB.Close 1 

Ошибка говорит о том, что аргумент, который вы ему дали (индекс), недопустим для коллекции SubMatches, поскольку он превышает количество элементов в коллекции.

Также помните, что индекс SubMatches начинается с «0». Я предполагаю, что вы намеренно пропустили первый пункт в пользу второго по четвертый пунктов в коллекции.

Я думаю, вы ожидаете, что он будет добавлять матч в коллекцию каждый раз, когда он будет проходить через цикл for. Это не так. Новый матч заменяет старый матч, поэтому у вас есть только один результат для работы одновременно.

Попробуйте что-то вроде этого:

 Private Sub CommandButton1_Click() sText = "Company: ABC Company" & vbNewLine & "Class Period: 2013-10-29 through 2014-10-22" & vbNewLine Set Reg1 = CreateObject("VBScript.RegExp") vText = "Missing" vText2 = "Missing" vText3 = "Missing" For i = 1 To 3 With Reg1 Select Case i Case 1 .Pattern = "(Company)\w*[:](.*?)\n" .Global = False Case 2 .Pattern = "(Class Period\s*[:]+\s*([\d-\s]*))" .Global = False Case 3 .Pattern = "(through+\s*([\d-\s]*))" .Global = False End Select End With If Reg1.Test(sText) Then Set M1 = Reg1.Execute(sText) For Each M In M1 If M.SubMatches.Count > 0 Then Select Case i Case 1 vText = Trim(M.SubMatches(1)) Case 2 vText2 = Trim(M.SubMatches(1)) Case 3 vText3 = Trim(M.SubMatches(1)) End Select End If Next End If Next i xlSheet.Range("A" & rCount) = vText xlSheet.Range("B" & rCount) = vText2 xlSheet.Range("C" & rCount) = vText3 xlWB.Close 1 End Sub 

Обратите внимание, что мне пришлось изменить регулярное выражение вашей компании, чтобы заставить его работать. Твоя оригинальная работа для меня не работала.

  • Ошибка времени выполнения 13: несоответствие типов
  • Ошибка времени выполнения 1004 над надстройкой: файл не может быть обработан, потому что он доступен только для чтения
  • Требуется объект Ошибка 424
  • Ошибка выполнения 1004 при запуске кода на листе, создаваемом динамически
  • Excel VBA - ошибка времени выполнения 1004 при упрощении записанного кода
  • Ошибка 6 с длинной переменной в Excel VBA
  • Ошибка выполнения VBA Application.Caller
  • Ошибка выполнения "424: Требуется объект"
  • Код ошибки VBA. Обязательный объект - тройной флажок, но все еще не работает.
  • Ошибка времени выполнения над условным форматированием в VBA
  • Что вызывает ошибку «Invalid advise flags» во время выполнения в Excel VBA?
  • Interesting Posts

    Динамический поиск столбцов с разными страницами в excel

    Данные Excel для Access DB – Get: операция должна использовать обновляемый запрос Ошибка

    Как экспортировать определенные значения из TXT в Excel?

    Автоматическое округление в Pandas Quantile

    Проверка цветовых индексов условно отформатированных ячеек

    Excel Macro Macro / VBA Ошибка 1004 – Копировать вставить с переменной

    Как получить максимальные значения из 2 столбцов в Excel?

    Формула для получения значений ячейки определенного столбца и номера переменной строки

    VBA добавляет возврат каретки в конце строки при вставке значения

    Форматирование Excel из Access работает каждый раз (переменная объекта / с не установленным блоком)

    Имя ссылочного листа через ячейку внутри формулы Excel

    Macro работает в Excel 2013, но дает ошибку компиляции в Excel 2016

    Excel VBA – поиск дубликатов значений в столбце и добавление _count

    Как подсчитать одинаковые значения в столбце для определенных пользователей

    Обнаруживать изменение листа, если пользователь удаляет

    Давайте будем гением компьютера.