Хобрук: Ваш путь к мастерству в программировании

Скопируйте диапазон Excel (форматирование и значения) и вставьте в тело нового сообщения Outlook.

Итак, я пытаюсь заставить это скопировать диапазон из другого раздела, указанного как переменная «Temp», так как мне заставить VBA скопировать диапазон Temp в excel и вставить форматирование и значения в тело Outlook?

Sub OutlookMessage()
Dim OutApp
Dim objOutlookMsg
Dim objOutlookRecip
Dim Recipients
Dim SubjLine As String
Dim MonSubjLine As String
Dim ws As Worksheet
Dim sndRange As Range
Dim Sunday
Dim Monday
Dim Today As Integer
Set OutApp = CreateObject("Outlook.Application")
Set objOutlookMsg = OutApp.CreateItem(olMailItem)
Set Recipients = objOutlookMsg.Recipients
Set objOutlookRecip = Recipients.Add("Recipient")
objOutlookRecip.Type = 1
    objOutlookMsg.SentOnBehalfOfName = "Sender"
                Today = Weekday(Date, vbMonday)
                    If Today = 1 Then
                        Sunday = Date - 1
                        Monday = Date - 7
                    End If
        MonSubjLine = "WEEK " & (DatePart("ww", Date, vbMonday) - 1) & " - PHONE REPORT (" & Monday & " Th " & Sunday & ")"
        SubjLine = StrConv(WeekdayName(Weekday(Date - 1, vbMonday), False, vbMonday), vbUpperCase) & " (" & Date - 1 & ") PHONE REPORT"
        Today = Weekday(Date, vbMonday)
            If Today > 1 Then
                objOutlookMsg.Subject = SubjLine
            ElseIf Today = 1 Then
                objOutlookMsg.Subject = MonSubjLine
            End If
    objOutlookMsg.HTMLBody = "How to Get My Table In Here?"
For Each objOutlookRecip In objOutlookMsg.Recipients
objOutlookRecip.Resolve
Next
objOutlookMsg.Display
Set OutApp = Nothing
End Sub

Я просто использовал это, чтобы вставить его

SendKeys "^({v})", True


Ответы:


1

Я настоятельно рекомендую сайт Рона де Брюина для автоматизации электронной почты с Excel в Outlook. Например:

Sub Mail_Range()
'Working in Excel 2000-2013
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
    Dim Source As Range
    Dim Dest As Workbook
    Dim wb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim OutApp As Object
    Dim OutMail As Object

    Set Source = Nothing
    On Error Resume Next
    Set Source = Range("A1:K50").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If Source Is Nothing Then
        MsgBox "The source is not a range or the sheet is protected, please correct and try again.", vbOKOnly
        Exit Sub
    End If

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set wb = ActiveWorkbook
    Set Dest = Workbooks.Add(xlWBATWorksheet)

    Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With

    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Selection of " & wb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")

    If Val(Application.Version) < 12 Then
        'You use Excel 97-2003
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        'You use Excel 2007-2013
        FileExtStr = ".xlsx": FileFormatNum = 51
    End If

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With Dest
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
            .to = "[email protected]"
            .CC = ""
            .BCC = ""
            .Subject = "This is the Subject line"
            .Body = "Hi there"
            .Attachments.Add Dest.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .Send   'or use .Display
        End With
        On Error GoTo 0
        .Close savechanges:=False
    End With

    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
19.01.2015

2

Объектная модель Outlook предоставляет три способа манипулирования телом.

  1. Свойство Body - строка представляет собой текстовое тело элемента Outlook.
  2. Свойство HTMLBody - строка, представляющая тело HTML указанного элемента. Свойство HTMLBody должно быть строкой синтаксиса HTML. Установка свойства HTMLBody всегда немедленно обновляет свойство Body.
  3. Объектная модель Word. Свойство инспектора WordEditor class возвращает экземпляр класса Document, который представляет тело вашего электронного письма.

Все эти способы описаны в Глава 17: Работа с телами предметов. Какой путь выбрать - решать вам.

19.01.2015
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

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

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..