Страницы: 1
RSS
Создание письма из Excel с вложенной книгой и таблицей
 
Уважаемые Знатоки!

Помогите, пожалуйста. Мне необходимо написать код, который будет
1. Сохранять файл с заданным имененем (как Subject письма), но при этом предлагать выбрать путь, куда его сохранить
2. Формировать письмо с текстом (как на листе Main, но не табличным вариантом, а именно текстом)
3. Вставлять 2 таблицы (1я таблица С17:J20,  2я таблица С22:D28 - сложнее, т.к. в ней может быть разное кол-во строк от 2х до "неизвенстно"
4. Вкладывать в письмо этот же самый файл, из которого делаем отправку
5. Добавлять подпись

У меня есть код, но работает он далеко не в полной мере, как надо. Он создает письмо, вставляет в тело только текст строки 4. Не могу найти вариант SaveAs, так чтобы имя файла задавалось автоматически. Ну и конечно же проблема с таблицами, их я как не крутила, ничего не получается :( Я даже пробовала прописать в sTable = Range("C18:J22").Copy а в тело вставить просто таблицу. Он ее скопировал, но не вставил :(

Код
Sub Send_Mail()

    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody1 As String, sBody2 As String, sBody3 As String, sTable As String, sAttachment As String, sCC As String
 
    Application.ScreenUpdating = False
    On Error Resume Next
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    
    Set objMail = objOutlookApp.CreateItem(0)
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
 
    sTo = Range("Q2").Value
    sCC = ""
    sSubject = Range("Q4").Value
    sBody1 = Range("C5").Value
    sBody2 = Range("C6").Value
    sBody3 = Range("C12").Value
    sTable = Range("C18:J22").Value
 
    With objMail
        .To = sTo
        .CC = ""
        .Subject = sSubject
        .body = sBody1
        .body = sBody2
        .body = sBody3
        .Table = sTable
        '.HTMLBody = sBody
        .Attachments.Add ActiveWorkbook.FullName
        .Display 'Send
    End With
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
    
MsgBox ("DONE")
End Sub
Изменено: Мария - - 19.11.2020 17:56:18
 
У Вас тут прям ТЗ целое :) На том сайте, откуда код - все что Вам надо есть по отдельности:
Вставить в письмо Outlook таблицу Excel с форматированием
Вставить в письмо подпись из Outlook через VBA
Диалоговое окно выбора файлов/папки
Можно в итоге собрать большую часть кода, а задать вопрос уже конкретно по тому моменту, который сделать не получается.

Цитата
Мария - написал:
Формировать письмо с текстом (как на листе Main, но не табличным вариантом, а именно текстом)
Это как интересно? У Вас же там таблицы :) Проще будет составить текст письма так, чтобы он был в одной ячейке и потом прикреплять таблицы ниже основного текста(или внутри, это уж по желанию - пример по ссылке выше есть)
Цитата
Мария - написал:
в письмо этот же самый файл
только его копию можно:
Код
ActiveWorkbook.SaveCopyAs путь_для_сохранения
.Attachments.Add путь_для_сохранения
Удачи!
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх