Диапазон Excel прошёл по центру тела письма - PullRequest
0 голосов
/ 25 октября 2019

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

Dim OutApp As Object
Dim OutMail As Object
Dim rng As Range
Set rng = Nothing
Set rng = ThisWorkbook.Sheets("Output").Range("D7:E18")
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
    .To = ""
    .BCC = ""
    .Subject = "Subject"
    .Display
    Dim wdDoc As Object
    Dim wdRange As Object
    Set wdDoc = OutMail.GetInspector.WordEditor
    Set wdRange = wdDoc.Range(0, 0)
    wdRange.InsertAfter vbCrLf & vbCrLf
    rng.Copy
    wdRange.Paste
  Set OutMail = Nothing
Set OutApp = Nothing
End With

1 Ответ

0 голосов
/ 25 октября 2019

Я быстро написал это ( Не проверено ). Надеюсь, это то, что вы пытаетесь?

Код работает так: он центрирует не только текст, но и таблицу (Excel Range), вставленную в тело Outlook.

Option Explicit

Const wdAlignRowCenter As Integer = 1
Const wdAlignParagraphCenter As Integer = 1

Sub Sample()
    Dim OutApp As Object, OutMail As Object
    Dim wdDoc As Object, wdRange As Object
    Dim rng As Range
    Dim i As Long

    Set rng = ThisWorkbook.Sheets("Output").Range("D7:E18")
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = ""
        .BCC = ""
        .Subject = "Subject"
        .Display

        Set wdDoc = .GetInspector.WordEditor
        Set wdRange = wdDoc.Range(0, 0)

        wdRange.InsertAfter vbCrLf & vbCrLf
        rng.Copy
        wdRange.Paste

        DoEvents

        Set wdRange = wdDoc.Range(0, wdDoc.Characters.Count)

        wdRange.ParagraphFormat.Alignment = wdAlignParagraphCenter

        For i = 1 To wdRange.Tables.Count
            wdRange.Tables(i).Rows.Alignment = wdAlignRowCenter
        Next i
    End With

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Примечание :

  1. КСТАТИ Set wdDoc = .GetInspector.WordEditor выдаст ошибку, если редактор по умолчанию не MS Word ...
  2. Если в вашем теле есть изображения, то вывозможно, придется обращаться с ними также отдельно
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...