Настройка Outlook VBA - PullRequest
0 голосов
/ 28 апреля 2020

При всей прозрачности я ничего не знаю о написании VBA-кодирования. Я нанял кого-то написать код в Outlook, который можно установить в макрос, который выполняет следующие действия при выделении электронного письма.

FW Email Вставить уже скопированный элемент из буфера обмена и вставить в поле «Поле» (скопированное электронное письмо). адрес) Удалить FW: из строки темы Удалить все, что выше исходного сообщения, включая информацию об оригинальном сообщении электронной почты / дату / адрес и т. д. c.

Когда я запускаю этот макрос, он делает все это, НО оставляет пустую строку над первым словом тела, которое называется «Привет, имя». Как я могу удалить эту пустую строку, чтобы "Hello Name" находилось в самом верху электронного письма ИЛИ ... Удалило ли оно имя Hello всем вместе, когда я запустил макрос? Ниже приведен код ..

Sub ForwardFromClipboard2()

Dim tmpEmail As MailItem
Dim fwEmail As MailItem



 For Each Item In Application.ActiveExplorer.Selection
        If TypeName(Item) = "MailItem" Then

        Set tmpEmail = Item.Forward
        tmpEmail.Subject = Item.Subject
        tmpEmail.To = GetClipBoardText

        tmpEmail.Display
        RemoveSign (tmpEmail.Subject)

        Set tmpEmail = Nothing
        End If
    Next
End Sub

Sub RemoveSign(MySubject As String)
Dim objOL As Application
Dim objDoc As Object
Dim objSel As Object

Set objOL = Application
Set objDoc = objOL.ActiveInspector.WordEditor
Set objSel = objDoc.Application.Selection

' delete signature
If objDoc.Bookmarks.Exists("_MailOriginal") Then
Set objBkm = objDoc.Bookmarks("_MailOriginal")
objSel.Start = 0
objSel.End = objBkm.Start
objDoc.Windows(1).Selection.Delete
End If

' delete FROM:, TO:, SUBJECT:
Dim search As String
  search = "Subject:"
  Dim search2 As String
  search2 = MySubject

  For Each para In objDoc.Paragraphs

      Dim txt As String
      txt = para.Range.Text

      If InStr(txt, search) Or InStr(txt, search2) Then
          para.Range.Delete
          Exit For
      End If

  Next
End Sub

Function GetClipBoardText() As String
   Dim DataObj As MSForms.DataObject
   Set DataObj = New MSForms.DataObject

   On Error GoTo Whoa

   DataObj.GetFromClipboard

   myString = DataObj.GetText(1)
   GetClipBoardText = myString

   Exit Function
Whoa:
   GetClipBoardText = ""
End Function

1 Ответ

0 голосов
/ 28 апреля 2020

Вы можете использовать объектную модель HTMLBody или Word для редактирования тела сообщения в соответствии с вашими потребностями. Объектная модель Word предоставляет метод Delete класса Range, который удаляет указанное количество символов или слов. См. Глава 17: Работа с телами предметов для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...