Вставить таблицу из сообщения электронной почты в лист Excel - PullRequest
1 голос
/ 29 мая 2019

Я хочу, чтобы отправитель и тело моей почты были вставлены в мой файл Excel.

Я достиг того, что вставил отправителя, но при вставке тела, являющегося таблицей, формат уничтожаетсяпоскольку он вставляется в одну ячейку.

Как вставить таблицу в мое электронное письмо рядом с отправителем?

Я думаю, что код для вставки таблицы должен начинаться с комментария: «Вставьте таблицуздесь, в теле письма.

Private Sub CommandButton1_Click()

    Dim OutlookApp As Outlook.Application
    Dim OutlookNamespace As Namespace
    Dim Folder As MAPIFolder
    Dim OutlookMail As Variant
    Dim i As Integer

    Set OutlookApp = New Outlook.Application
    Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
    Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders("ABV")

    i = 2

    With ThisWorkbook.Sheets("Sheet2")
        For Each OutlookMail In Folder.Items
            If OutlookMail.ReceivedTime >= .Range("C1") Then
                With .Cells(i, 1)
                    .Value = OutlookMail.SenderName
                    .Columns.AutoFit
                    .VerticalAlignment = xlTop
                End With
                With .Cells(i, 2)
                    'Paste the table inside the email body here
                End With
                i = i + 1
            End If
        Next OutlookMail
    End With

    Set Folder = Nothing
    Set OutlookNamespace = Nothing
    Set OutlookApp = Nothing

End Sub

Все письма в этой папке будут содержать таблицу, поэтому я хотел бы зациклить, когда каждый отправитель и его таблица вставляются.

1 Ответ

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

Вы можете адресовать и копировать таблицу в теле письма следующим образом:

OutlookMail.GetInspector.WordEditor.Range.Tables(1).Range.Copy

и затем вы вставляете его e. г. в качестве значений в Excel.Range:

With ThisWorkbook.Sheets("Sheet2")
    .Range("A1").PasteSpecial xlPasteValues 

Если вы хотите вставить в другой формат, поддерживаемый буфером обмена, попробуйте получить идеальный формат с помощью макросов Excel. В результате получается что-то вроде этого:

With ThisWorkbook.Sheets("Sheet2")
    .Range("A1").Select
    .PasteSpecial Format:="Text"   ' or "HTML" or ...
...