Как выбрать тело письма и отформатировать интервал между абзацами с помощью макроса Excel? - PullRequest
0 голосов
/ 09 мая 2019

Я написал письмо в Outlook, используя макрос Excel.Однако интервал между строками абзаца установлен на «Авто», и я хотел бы, чтобы интервал был «0 пунктов» как до, так и после.

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

Sub Email_Budget()

   Dim objOutlook As Object
   Set objOutlook = CreateObject("Outlook.Application")

   Dim objEmail As Object
   Set objEmail = objOutlook.CreateItem(olMailItem)

   Dim CaseCount As Long
   CaseCount = WorksheetFunction.CountA(Range("B6:B500"))
   'Debug.Print CaseCount

   Dim i As Integer

   With objEmail
      .To = "abc@xyz.com"
      .Subject = "TEST1: May 2019 Budget"
      .HTMLBody = "Karen,<br><br>"
      .HTMLBody = .HTMLBody & "The potential " & MonthName(Month(ActiveSheet.Range("A2"))) & " invoices are below.<br><br>"
      For i = 1 To CaseCount
        If ActiveSheet.Cells(i + 5, 4).Value = "Yes" Then
            .HTMLBody = .HTMLBody & "<ul style='list-style-type:disc;'>" & "<li>" & ActiveSheet.Cells(i + 5, 2).Value & " - " & Format(ActiveSheet.Cells(i + 5, 6).Value, "Currency") _
            & " (" & Format(ActiveSheet.Cells(i + 5, 8).Value, "Currency") & " without budget or invoicing)." & "</li>" & "</ul>"


      End If
      Next i
      .HTMLBody = .HTMLBody & "<br>Thank you,<br>Kurt"
      .Display
   End With
End Sub

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Вы пишете <ul> и </ul> для каждого элемента списка - вы должны просто написать <ul> перед входом в цикл, а затем </ul> после завершения цикла.Исправление, которое может решить вашу проблему с расстоянием

   With objEmail
      .To = "abc@xyz.com"
      .Subject = "TEST1: May 2019 Budget"
      .HTMLBody = "Karen,<br><br>"
      .HTMLBody = .HTMLBody & "The potential " & _
                  MonthName(Month(ActiveSheet.Range("A2"))) & _
                  " invoices are below.<br><br><ul style='list-style-type:disc;'>"

      For i = 1 To CaseCount
        If ActiveSheet.Cells(i + 5, 4).Value = "Yes" Then

            .HTMLBody = .HTMLBody & "<li>" & ActiveSheet.Cells(i + 5, 2).Value & _
                        " - " & Format(ActiveSheet.Cells(i + 5, 6).Value, "Currency") & _
                        " (" & Format(ActiveSheet.Cells(i + 5, 8).Value, "Currency") & _
                        " without budget or invoicing)." & "</li>"


        End If
      Next i
      .HTMLBody = .HTMLBody & "</ul><br>Thank you,<br>Kurt"
      .Display
   End With
0 голосов
/ 09 мая 2019

Самый простой способ форматирования электронных писем, как это, это написать письмо в Outlook с форматированием, отправить его себе, затем щелкнуть правой кнопкой мыши тело письма и выбрать Просмотр источника. Затем вы можете выбрать соответствующие разделы HTML.

В вашем случае, я полагаю, вы хотите добавить эти две опции стиля, чтобы установить интервал до / после:

style='mso-margin-top-alt:0.0pt;margin-bottom:0.0pt;'

...