#vba #email #excel #automation
#vba #Адрес электронной почты #excel #автоматизация
Вопрос:
У меня есть 10 столбцов данных с различным количеством строк, которые отправляются по электронной почте в виде неформатированного диапазона. Я хочу иметь возможность заполнять ячейки в каждом столбце пробелами, чтобы неформатированный диапазон копировался как равномерно распределенный. Причина, по которой диапазон неформатирован, заключается в том, что я использую LotusNotes, и у меня нет параметров интеграции, как у меня с Outlook. В любом случае, без добавления столбцов я могу дополнить ячейки символом пробела, чтобы диапазон выглядел хорошо в электронном письме?
РЕДАКТИРОВАТЬ: Таким образом, это позволяет мне вводить электронное письмо через поле ввода и выбирать диапазон. Он создаст электронное письмо и отправит, но не сохранит форматирование ячеек (т. Е. интервал), можно ли это сделать? Я пытался использовать объекты MIME для использования HTML, однако я не уверен, как бы я скопировал диапазон в тело HTML
Обновленный код:
Sub Lotus_Email()
Dim noSession As Object, noDatabase As Object, noDocument As Object
Dim vaRecipient As String
Dim rnBody As Range
Dim Data As DataObject
Const stSubject As String = "EMAIL SUBJECT"
Const stMsg As String = "Please review the following Purchase Orders and advise."
Const stPrompt As String = "Please select the range:"
'This is one technique to send an e-mail to many recipients but for larger
'number of recipients it's more convenient to read the recipient-list from
'a range in the workbook.
vaRecipient = InputBox("Please enter an e-mail address", "E-Mail Address Entry")
On Error Resume Next
Set rnBody = Application.InputBox(Prompt:=stPrompt, _
Default:=Selection.Address, Type:=8)
'The user canceled the operation.
If rnBody Is Nothing Then Exit Sub
On Error GoTo 0
'Instantiate Lotus Notes COM's objects.
Set noSession = CreateObject("Notes.NotesSession")
Set noDatabase = noSession.GETDATABASE("", "")
'Make sure Lotus Notes is open and available.
If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
'Create the document for the e-mail.
Set noDocument = noDatabase.CreateDocument
'Copy the selected range into memory.
rnBody.Copy
Set rtItem = noDocument.CreateRichTextItem("Body")
With rtItem
.appendtext ("LINE 1")
.addnewline (2)
.appendtext ("LINE 2")
.addnewline (2)
.addnewline (1)
.appendtext ("Please review and respond to the email noted above")
.appendtext ("TEST")
rnBody.PasteSpecial
End With
'Add data to the mainproperties of the e-mail's document.
With noDocument
.Form = "Memo"
.SendTo = vaRecipient
.Subject = stSubject
'Retrieve the data from the clipboard.
' NON-HTML BODY OFF
' .Body = stMsg amp; vbCrLf amp; vbCrLf amp; vbCrLf amp; vbCrLf amp; Data.GetText
.SaveMessageOnSend = True
End With
'Send the e-mail.
With noDocument
.PostedDate = Now()
.Send 0, vaRecipient
End With
'Release objects from memory.
Set noDocument = Nothing
Set noDatabase = Nothing
Set noSession = Nothing
'Activate Excel for the user.
AppActivate "Microsoft Excel"
'Empty the clipboard.
Application.CutCopyMode = False
MsgBox "The e-mail has successfully been created and distributed.", vbInformation
End Sub
Комментарии:
1. Вы отправляете электронную почту в формате HTML? Если это так, вы можете добавить интервал к интервалу между границами ячеек.
2. Я так не считаю. У меня есть окно запроса, в котором выбирается диапазон ячеек (приложение. Поле ввода) и тогда это становится . Текст электронного письма. Outlook имеет возможность форматирования с помощью HTML, но не отображается, что LotusNotes имеет это
3. Lotus Notes определенно может отправлять электронные письма в формате HTML. Кроме того, вы можете интегрировать Microsoft Office в Lotus Notes с помощью OLE. Обратитесь к ibm.com/developerworks/lotus/library/notes-ole
Ответ №1:
НЕПРОВЕРЕНО. Может быть, что-то вроде этого?:
=A1amp;REPT(" ",25-LEN(A1))
Комментарии:
1. Это действительно работает! однако причина, по которой я пытаюсь избегать формул, заключается в том, что ячейки часто автоматически обновляются новой информацией, которая перезаписывает мои формулы:(
Ответ №2:
Итак, после использования LotusNotes MIME я мог импортировать форматированный текст, однако это не сохранило бы ширину столбца и форматирование Excel. Я создал временную книгу с моим выбором диапазона и прикрепил ее в качестве вложения. Похоже, это способ справиться с этим с помощью LotusNotes.