Добавить определенную ячейку в Excel в тело письма VBA Excel - PullRequest
0 голосов
/ 05 февраля 2019

В настоящее время у меня есть код, который будет генерировать электронное письмо на основе даты наступления срока оплаты.Ниже приведен пример моей таблицы.[Изображение таблицы Excel] [1] [1]: https://i.stack.imgur.com/lYhlD.png. Мой код работает для заполнения электронного письма, но я хочу указать идентификатор, описание, назначенный и срок выполнения в поле электронной почты.Может кто-нибудь помочь?

Sub datesexcelvba()
Dim myApp As Outlook.Application, mymail As Outlook.MailItem
Dim mydate1 As Date
Dim mydate2 As Long
Dim datetoday1 As Date
Dim datetoday2 As Long

Dim x As Long
With Sheets("Sheet2")
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To lastrow

mydate1 = Cells(x, 7).Value
mydate2 = mydate1

Cells(x, 37).Value = mydate2

datetoday1 = Date
datetoday2 = datetoday1

Cells(x, 36).Value = datetoday2

If mydate2 - datetoday2 = 10 Then


Set myApp = New Outlook.Application
Set mymail = myApp.CreateItem(olMailItem)
mymail.To = Cells(x, 31).Value
mymail.CC = Cells(x, 32).Value


With mymail
.Subject = "Payment Reminder"
.Body = "Please close your ICAR  by due date"
.Display
'.send
End With

Cells(x, 33) = “Yes”
Cells(x, 33).Interior.ColorIndex = 3
Cells(x, 33).Font.ColorIndex = 2
Cells(x, 33).Font.Bold = True
Cells(x, 33).Value = mydate2 - datetoday2
End If

Next
Set myApp = Nothing
Set mymail = Nothing
End With

End Sub

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Чтобы получить идентификационный номер в теле письма, см. Пример

Dim x As Long
Dim Sht As Worksheet
Set Sht = ThisWorkbook.Sheets("Sheet2")

Dim lastrow As Long
With Sht
    lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row

    For x = 2 To lastrow

        .Cells(x, 37).Value = mydate2
         Set myApp = New Outlook.Application
         Set mymail = myApp.CreateItem(olMailItem)

        Dim IDnumber As String
        IDnumber = .Cells(x, 1).Value

        Debug.Print IDnumber ' print on immediate Window

        With mymail
            .Subject = "Payment Reminder"
            .Body = "ID Number " & IDnumber
            .Display
            '.send
        End With

        .Cells(x, 33) = "Yes"
        .Cells(x, 33).Interior.ColorIndex = 3
        .Cells(x, 33).Font.ColorIndex = 2
        .Cells(x, 33).Font.Bold = True
    Next
0 голосов
/ 05 февраля 2019

Мне нравится создавать то, что я хочу в Excel, а затем импортировать это.

SubjectTemp = wb.names("NamedRange!").Referstorange.value2

-

With mymail
.Subject = SubjectTemp
.Body = "Please close your ICAR  by due date"
.Display
'.send
End With

-

="My email subject is to "&$A$1

Это устанавливаетТема «Мой адрес электронной почты» и все, что находится в A1.

Промыть и повторить для всех полей.

Это позволяет легко редактировать внутри Excel без необходимости заходить в VBA,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...