Не подскажете, почему нижеприведенный код никак не приаттачивает скопированный отдельно лист 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
Победил. Но книгу закрывает, а из 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
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
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