отправить по электронной почте содержимое листа - PullRequest
0 голосов
/ 26 июня 2018

Я использую этот код для создания электронной почты Тем не менее, я хотел бы отправить содержимое в диапазоне от A5 до B100, например так: A5 B5 A6 B6 ... A100 B100

что вы предлагаете? текущий код, выглядит так:

Public Function Sendemail()
On Error GoTo Ende
esubject = "CBP Review for Approval"
sendto = Range("G1") & Range("H1")
ccto = Range("G1")
ebody = "Please see below a" & vbNewLine & Range("A5") & " " & Range("B5") &             vbCrLf & "Best regards" & vbCrLf & "Your Partner"

Set app = CreateObject("Outlook.Application")
Set itm = app.CreateItem(0)

With itm
.Subject = esubject
.To = sendto
.CC = ccto
.Body = ebody
.Display
End With
Set app = Nothing
Set itm = Nothing

так, как сейчас, просто пишет A5 и B5, но нужен цикл для записи других большое спасибо

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Я написал ответ, но ваши вопросы говорят, что вы уже знаете, что должны делать. Почему бы просто не посмотреть? Первый результат из google search "vba loop"

Может использовать UsedRange.Rows.Count, чтобы получить последнюю строку. Если ваш цикл выходит за пределы диапазона данных или содержит пробелы, вы можете раскомментировать оператор if. Таким образом, вы не получите кучу новых строк.

Dim sData as string

For iRowCounter = 5 to ??
    'if Range("A" & iRowCounter) <> "" or Range("B" & iRowCounter) <> "" then
        sData = sData & Range("A" & iRowCounter) & " " & Range("B" & iRowCounter) & vbNewline
    'end if
Next

eBody = "Please see..." & vbnewline & sData & "Best Regards..."
0 голосов
/ 26 июня 2018

Вы можете использовать цикл For для построения тела вашего сообщения по одной строке за раз. Заменить следующую строку:

ebody = "Please see below a" & vbNewLine & Range("A5") & " " & Range("B5") &             vbCrLf & "Best regards" & vbCrLf & "Your Partner"

со следующим кодом:

ebody = "Please see below a" & vbNewLine

For i = 5 To 100
    If Range("A" & i) <> "" or Range("B" & i) <> "" Then
        ebody = ebody & Range("A" & i) & " " & Range("B" & i) & vbCrLf
    End If
Next i

ebody = ebody & "Best regards" & vbCrLf & "Your Partner"

Обратите внимание на два различных способа конкатенации (оператор &), один для добавления новых строк в существующее тело:

ebody = ebody & "more text to add..."

и еще один, чтобы создать ссылку на ячейку в каждой строке. Range("A" & i) внутри цикла приведет к добавлению к сообщению ячеек от A5 до A100 (и, аналогично, от B5 до B100).

Наконец, оператор If гарантирует, что в вашу электронную почту будут добавлены только строки, содержащие данные в ячейке A или B.

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