Страницы: 1
RSS
Отправка листа Excel через Lotus Notes (VBA)
 
Добрый день!

Не подскажете, почему нижеприведенный код никак не приаттачивает скопированный отдельно лист Excel? Само сообщение приходит, а аттача нет...
Код
Sub SendNotesMail()'This public sub will send a mail and attachment if neccessary to the recipient including the body text.
'Requires that notes client is installed on the system.

'Set up the objects required for Automation into lotus notes
Dim Subject As String
Dim Attachment As String
Dim Recipient As String
Dim BodyText As String
Dim SaveIt As Boolean
Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachMe As Object 'The attachment richtextfile object
Dim Session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
Dim EmailSend As Object
Dim EmailApp As Object

'Start a session to notes

Set Session = CreateObject("Notes.NotesSession")

'Get the sessions username and then calculate the mail file name.
'You may or may not need this as for MailDBname with some systems you can pass an empty string
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"

'Open the mail database in notes
Set Maildb = Session.GetDataBase("", MailDbName)
If Maildb.IsOpen = True Then
'Already open for mail
Else
Maildb.OpenMail
End If

'Set up the new mail document
Set MailDoc = Maildb.CreateDocument
MailDoc.Form = "Memo"
MailDoc.SendTo = "xxxx@xxxx.com"
MailDoc.Subject = "TDBank Validation File"
MailDoc.Body = "Here is your TDBank Validation File for today."
MailDoc.SaveMessageOnSend = SaveIt

'Set up the embedded object and attachment and attach it

ThisWorkbook.Sheets("Лист1").Copy
Attachment = ActiveWorkbook.FullName
If Attachment <> "" Then
Set AttachMe = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachMe.EMBEDOBJECT(1454, "", Attachment, "Attachment")
MailDoc.CREATERICHTEXTITEM ("Attachment")
End If

'Send the document
MailDoc.PostedDate = Now()
MailDoc.Send 0, Recipient

'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachMe = Nothing
Set Session = Nothing
Set EmbedObj = Nothing

ActiveWorkbook.Saved = True
ActiveWorkbook.Close

End Sub
Изменено: Church - 02.04.2015 17:49:39
 
Победил. Но книгу закрывает, а из Excel не выходит. Вопрос - как выйти из Excel (2010)? Application.Quit не помогает...
Код
Set Session = Nothing
Set Dir = Nothing
Set Doc = Nothing
Set Workspace = Nothing
Set EditDoc = Nothing
ActiveWindow.Close

Application.ScreenUpdating = True

sWrb = ActiveWorkbook.Name

Workbooks(sWrb).Close SaveChanges:=False

End Sub
 
Видимо, надо подождать какое-то время, чтобы процесс завершился(LN видимо держит). Можно попробовать запускать отдельную процедуру по OnTime, в которой будет только одна строка: Application.Quit

Еще можно попробовать закрывать книгу(которая вкладывается в письмо) перед её вложением в письмо:
Код
Attachment = ActiveWorkbook.FullName
If Attachment <> "" Then
ActiveWorkbook.Close 1
Set AttachMe = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachMe.EMBEDOBJECT(1454, "", Attachment, "Attachment")
MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо огромное!

Оказалось, что в модуль книги нужно было вставить код и все получилось! Я то пытался на одной странице все сделать. Нашел ту же самую проблему с закрытием здесь http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=16674&TITLE_SEO=16674&MID=143...
 
А вот весь код. Может пригодится кому.
Код
Sub SendNotesMail()
Dim Название_листа As Variant
Dim Текущая_дата As Variant
Dim Session As Object
Dim Dir As Object
Dim Doc As Object
Dim Workspace As Object
Dim EditDoc As Object
Dim AttachME As Object
Dim AdrStr(4) As String
Dim sWrb As String

AdrStr(0) = "xxxx@xxxx.com" 'IT Specialist
'AdrStr(1) = "email" 'Adm Manager
'AdrStr(2) = "email" 'HR
'AdrStr(3) = "email" 'Accountant
'AdrStr(4) = "email" 'Head of HR and Admin

Application.ScreenUpdating = False

On Error Resume Next

Sheets("Заявка").Select
Текущая_дата = Range("D3").Value
Название_листа = ActiveSheet.Name

Sheets("Заявка").Copy
ActiveWorkbook.SaveAs Filename:=Название_листа & "_" & Текущая_дата & ".xls", FileFormat:=xlNormal
'Open curent session on LotusNotes
Set Workspace = CreateObject("Notes.NotesUIWorkspace")
Set Session = CreateObject("notes.NOTESSESSION")
Set Dir = Session.GETDATABASE("", "")
Call Dir.OPENMAIL

'Create document
Set Doc = Dir.CREATEDOCUMENT

'Doc.form = "Memo"
Doc.Subject = "Тема письма"
Doc.SendTo = AdrStr()
Doc.body = "Текст письма"

Attachment = ActiveWorkbook.FullName
If Attachment <> "" Then
Set AttachME = Doc.CREATERICHTEXTITEM("Attachment" & i)
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
End If

Doc.SAVEMESSAGEONSEND = True
Call Doc.Send(False)

Set Session = Nothing
Set Dir = Nothing
Set Doc = Nothing
Set Workspace = Nothing
Set EditDoc = Nothing
ActiveWindow.Close

Application.ScreenUpdating = True

sWrb = ActiveWorkbook.Name

Workbooks(sWrb).Close SaveChanges:=False

End Sub
Страницы: 1
Наверх