Извлечение URL с использованием регулярного выражения

Я получаю 10 или 12 писем с одного и того же веб-сайта, и я хотел бы извлечь конкретный URL-адрес с использованием регулярного выражения (если это возможно) и вставить его в правильный файл Excel. Электронные письма находятся в Outlook, и у меня уже есть сценарий VBA (который работает из Outlook VBA), который я использовал для извлечения объекта и отправителя. Тем не менее, мне действительно нужен этот конкретный URL-адрес в каждом электронном письме, чтобы быть третьим извлеченным материалом.

Я попытался создать ряд шагов, чтобы:

  1. создать RegEx
  2. применить RegEx к текущему электронному письму
  3. поместите извлеченный URL в документ excel.

Однако все, что я создал, терпит неудачу. VBA, вставленный ниже, всегда работал до тех пор, пока я не написал дополнительную часть RegEx.

Я считаю, что у меня есть правильный шаблон:

/http:\/\/www.changedetection.com\/log(.*)/ig 

Всякий раз, когда я запускаю новый скрипт VBA, он ничего не делает. Старый код всегда работал. Код написан на этом сеансе Outlook (только для уточнения), потому что почтовый элемент должен запускаться из сценария.

 Const xlUp As Long = -4162 Sub ExportToExcel(MyMail As MailItem) Dim strID As String, olNS As Outlook.NameSpace Dim olMail As Outlook.MailItem Dim strFileName As String Dim strBody As String Dim Reg1 As RegExp Dim M1 As MatchCollection Dim M As Match Set Reg1 = New RegExp With Reg1 .Pattern = "http://www\.changedetection\.com/log(.*)" .IgnoreCase = True .Global = True End With If Reg1.test(olMail.Body) Then Set M1 = Reg1.Execute(olMail.Body) For Each M In M1 strBody = M.SubMatches(1) Next End If '~~> Excel Variables Dim oXLApp As Object, oXLwb As Object, oXLws As Object Dim lRow As Long strID = MyMail.EntryID Set olNS = Application.GetNamespace("MAPI") Set olMail = olNS.GetItemFromID(strID) '~~> Establish an EXCEL application object On Error Resume Next Set oXLApp = GetObject(, "Excel.Application") '~~> If not found then create new instance If Err.Number <> 0 Then Set oXLApp = CreateObject("Excel.Application") End If Err.Clear On Error GoTo 0 '~~> Show Excel oXLApp.Visible = True '~~> Open the relevant file Set oXLwb = oXLApp.Workbooks.Open("M:\Monitor\Monitor_Test_1.xlsx") '~~> Set the relevant output sheet. Change as applicable Set oXLws = oXLwb.Sheets("Test") lRow = oXLws.Range("A" & oXLApp.Rows.Count).End(xlUp).Row + 1 '~~> Write to outlook With oXLws ' '~~> Code here to output data from email to Excel File '~~> For example ' .Range("A" & lRow).Value = olMail.Subject .Range("B" & lRow).Value = olMail.SenderName .Range("C" & lRow).Value = strBody ' End With '~~> Close and Clean up Excel oXLwb.Close (True) oXLApp.Quit Set Reg1 = Nothing Set oXLws = Nothing Set oXLwb = Nothing Set oXLApp = Nothing Set olMail = Nothing Set olNS = Nothing End Sub 

Шаблоны регулярных выражений VBScript не используют / для указания начала и конца. Они также не используют i или g после окончания / для указания нечувствительности к регистру или глобальной целостности. Вместо этого используйте свойства IgnoreCase и Global .

Например:

 With Reg1 .Pattern = "http://www\.changedetection\.com/log(.*)" .IgnoreCase = True .Global = True End With 

Вот отличная ссылка, если вы ищете дополнительную информацию о объекте RegExp .

  • Как создать регулярное выражение, чтобы найти n появления «» в ячейке
  • excel regex macro, чтобы соответствовать zip-коду и переместить его на четыре столбца вправо
  • Регулярное выражение соответствует месяцу месяца и года
  • Найти и заменить результат регулярного выражения в Excel VB
  • Извлеките ВСЕ IP-адреса из Microsoft Outlook Messsage с помощью макросов
  • Найти и заменить все экземпляры шаблона в строке с помощью регулярных выражений
  • Итерация через список, разделенный запятыми в Matlab, дает ошибку: «Для списка разделенных запятыми выражение должно иметь ровно один элемент».
  • Извлечь шаблон из столбца
  • regex найти два слова в libre calc
  • Excel, дубликаты в строке, одноячеечная итерация
  • Поиск и замена определенных расширений в гиперссылках в Excel
  • Interesting Posts

    import from excel to sql server: ошибка поставщика Microsoft.ACE.OLEDB.12.0

    Запуск макроса на ячейке, измененной пользователем

    Команда Outlook VBA Pickfolder для включения подпапок

    Excel 2003: Синтаксис VBA вызывает проблемы в Excel 2010 – Альтернативы?

    Сравнение и удаление повторяющихся адресов, отформатированных по-разному

    Когда обновление ячейки со списком проверяется (пользователь выбирает другое значение из списка), другая ячейка автоматически обновляет

    `% ': невозможно преобразовать таблицу: столбец в целое (TypeError)

    C # – Ошибка форматирования номера Excel с международными настройками

    Формула Excel, ссылающаяся на другую книгу без косвенных (), поскольку книги могут быть открытыми или закрытыми в любое время

    Excel Macro для обновления журнала

    Я получаю ошибку «пользовательский тип не определен» при определении переменных

    Перевести индекс столбца в имя столбца Excel

    экспортировать данные панд данных комплексных чисел в excel

    Экспорт C # в проблему XLS

    Вызов функции Excel

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