Удалите текст и гиперссылки, затем перешлите

РЕДАКТИРОВАТЬ: добавлен фрагмент ближе к фактической строке, которую я пытаюсь манипулировать внизу сообщения. Это не дословно, ключевая информация удалена, но я скопировал и вставил из электронного письма, которое пытаюсь переслать. Просто пытаюсь извлечь таблицу посередине и вперед.

Я хочу удалить определенный текст в полученном электронном письме, удалить гиперссылки, сохранить форматирование, а затем переслать на определенный адрес.

По сути, электронная почта имеет следующую структуру:

"Дорогой пользователь,

пожалуйста, найдите соответствующую информацию ниже

база данных: записи нажмите здесь, чтобы просмотреть это онлайн

  • Заголовок таблицы
  • Заголовок столбца
  • Запись 1
  • Запись 2
  • Запись 3
  • ...
  • Финальная запись

Если у вас возникли проблемы с использованием приведенной выше ссылки, вставьте эту ссылку в адресную строку, чтобы перейти к онлайн-базе данных:

somewebsite.database.net/tr/vuioahdf

Это автоматическое электронное письмо..."

Мне нужно убрать текст перед таблицей, удалить гиперссылки, сохранить форматирование и вперед.

Я попробовал следующее.

Sub RemoveExpression()

Dim Insp As Inspector
Dim obj As Object

    Set Insp = Application.ActiveInspector
    Set obj = Insp.CurrentItem

    obj.Body = Replace(obj.Body, "Dear user, please find the relevant information below database: records click here to view this online - Table header " & _
                                    vbNewLine & "If you have trouble using the link above, paste this link in your address bar to go to the online database http://somewhere.database.net/tr/vuioahdf This is an automated email...", "")

    Set obj = Nothing
    Set Insp = Nothing

End Sub

Это дает мне ошибку о том, что объект не определен, но это что-то вроде того, что я хочу сделать. Удалите некоторый текст до и после таблицы, удалите гиперссылки, а затем перенаправьте на определенный адрес. Удаление гиперссылок может быть не совсем необходимым, так как они в основном находятся в тексте до и после таблицы, но гиперссылка есть в заголовке таблицы.

Электронная почта, которой я пытаюсь управлять:

Dear User,<br>
<br>
Please find below drawing received last week for project
<br> <br>
<b><u></u>Document Control: Projects<u></u></b><br>
Click <a href="somehwere.net" target="_blank">here</a> to see this report on the database.
<br> <br>
<div style="font-size:70%;font-family:Verdana,Helvetica,Geneva,sans-serif">
<div>
<table width="100%" cellpadding="0" cellspacing="0">
<tr style="background-color:#c4defb">
<td style="border-top:1px solid #55a0ef;border-bottom:1px solid #55a0ef">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td style="width:200px;padding:4px 8px;font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;color:#505050;font-weight:normal;font-size:9pt">
<a style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;color:#505050;font-weight:normal;font-size:9pt;text-decoration:none" href="somewhere.net" title="See this report" target="_blank">Full Report</a>
| <a style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;color:#505050;font-weight:normal;font-size:9pt;text-decoration:none" href="somewhere.net" title="Edit all the Drawings shown below" target="_blank">Grid Edit</a>
</td>
<td style="width:200px;padding:4px 8px;font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;color:#505050;font-weight:normal;font-size:9pt" align="right">
<span><label>Date Created</label> is during <label> &#39;last 2 wk&#39; </label> AND ...</span>    <span>11 Drawings</span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<thead style="display:table-header-group">
<tr>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"> </td>
<td align="right" style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"><div></div><span>Date Created</span><span></span></td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"><span>Project Name</span><span></span></td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"><span>Sub Project</span><span></span></td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"><span>Project Description</span><span></span></td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"><span>Drawing Number</span><span></span></td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"><span>Revision</span><span></span></td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"><span>Title</span><span></span></td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-color:#f6f9fd;padding:3px 4px;font-weight:bold;font-size:10pt;color:#111111"><span>Transmittal</span><span></span></td>
</tr>
</thead>
<tbody style="display:table-row-group">
<tr>
<td nowrap style="border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111"> </td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111" align="right">02-18-2016</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">Rig xxx</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">120</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">Structure</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">00813-121-000-001WM</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">0</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">REAR FRAME</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">02182016</td>
</tr>
<tr style="background-color:#f2f2f2">
<td nowrap style="border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111"> </td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111" align="right">02-18-2016</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">Rig xxx</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">120</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">Structure</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">00813-121-000-000</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">0</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">REAR ASSEMBLY</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">01282016</td>
</tr>
<tr>
<td nowrap style="border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111"> </td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111" align="right">02-18-2016</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">Rig xxx</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">120</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">Structure</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">00813-121-000-001</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">0</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">REAR FRAME</td>
<td style="font-family:Helvetica Neue,Helvetica,Tahoma,Arial,sans-serif;border-left:1px solid #ccc;border-bottom:1px solid #ccc;padding:3px 4px;font-size:10pt;color:#111111">01282016</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
</div>
<br>
If you have trouble using the link above, copy and paste the following Web address into the address bar of your browser:
<br>   <a href="somewhere.net" target="_blank">somewhere.net</a>
<br> <br>
This is an automated email from an online application. If you feel that you received this email in error, please contact the application's manager,
<a href="mailto:[email protected]" target="_blank">[email protected]</a>
</td></tr></table>
</div>
</font></div></table></table></div></div></body></html>


person KenFabIT    schedule 02.03.2016    source источник


Ответы (1)


Свойство Body полученного вами MailItem доступно только для чтения. Вероятно, поэтому вы получаете сообщение об ошибке. Вам нужно переслать сообщение, получить переадресованное сообщение, а затем манипулировать им Body.

Если вы получили электронное письмо, в котором была куча вещей, включая одну таблицу, и вы хотели переслать только таблицу, вы можете использовать такой код

Public Sub ForwardTableOnly()

    Dim olMail As MailItem
    Dim lTblStart As Long, lTblEnd As Long

    Set olMail = ActiveInspector.currentItem.Forward

    lTblStart = InStr(1, olMail.HTMLBody, "<table")
    lTblEnd = InStr(lTblStart, olMail.HTMLBody, "</table")

    olMail.HTMLBody = Mid$(olMail.HTMLBody, lTblStart, lTblEnd - lTblStart + 1)
    olMail.Display

End Sub

Он находит, где находится таблица в свойстве HTMLBody, и избавляется от всего остального. Это работает, но это сложнее, чем это. Если вы хотите сохранить таблицу и некоторые другие вещи, у вас будут более сложные манипуляции со строками. И если форматирование важно для вас, у вас будет другая проблема. Вполне вероятно, что таблица отформатирована со стилями, которые определены выше в HTMLBody вместе с кучей других стилей. Это еще больше манипуляций со строками. Но манипуляции со строками достаточно просты, если не утомительны и скучны.

Соответствующие моменты: вызовите метод Forward и присвойте полученный MailItem объектной переменной. Затем установите свойство HTMLBody этого объекта на все, что хотите. В этом примере я использую свойство .Display для отображения сообщения. Возможно, вы захотите использовать .To и .Send, а не .Display.

person Dick Kusleika    schedule 02.03.2016
comment
Вау, это сработало так хорошо! Только одна проблема: HTML, вероятно, имеет собственное определение таблицы (как вы упомянули), поскольку этот макрос извлекает только заголовок. Если бы он мог тянуть всю таблицу, он бы работал отлично! - person KenFabIT; 04.03.2016
comment
Извините за задержку с ответом!!! Кроме того, это так близко! Но я внимательно посмотрел на исходный код таблицы. Судя по всему, это 2 стола. Заголовок на самом деле является таблицей сверху. Затем есть вторая таблица с информацией, которую я больше всего заинтересован в пересылке. Этот макрос подошел так близко, но он не удалял текст перед таблицей и включал его до тех пор. Извините, что надоедаю, но где я могу найти хорошие манипуляции со строками для макросов? Спасибо за всю твою помощь! - person KenFabIT; 04.03.2016
comment
Если вы опубликуете фактическую строку (или близкий пример), я могу дать вам больше деталей. Для работы со строками найдите Mid, Instr и Replace. Они доставят вам большую часть пути. Там также есть библиотека регулярных выражений, если вы хорошо разбираетесь в этом. - person Dick Kusleika; 06.03.2016
comment
Я пошел дальше и добавил фрагмент того, что я пытаюсь манипулировать, и отправить по электронной почте. Надеюсь, этого достаточно, чтобы поработать и посмотреть, сможем ли мы извлечь только таблицу. Ваша помощь была отличной! Обязательно запустите фрагмент, чтобы вы могли видеть то, что вижу я. - person KenFabIT; 08.03.2016