Страницы: 1
RSS
как автоматически отправить файл Excell через lotus ?
 
До недавнего времени пользовался для отправики файлов следующим макросом:  
 
Sub SendMail()    
   Dim OutApp As Object  
   Dim OutMail As Object  
   Dim cell As Range  
               
   Application.ScreenUpdating = False  
   Set OutApp = CreateObject("Outlook.Application")  
   OutApp.Session.Logon  
   On Error GoTo cleanup  
   Set OutMail = OutApp.CreateItem(0)  
   On Error Resume Next  
     
   With OutMail  
       .To = Range("A1").Value  
       .Subject = Range("A2").Value  
       .Body = Range("A3").Value  
       .Attachments.Add Range("A4").Value  
                       .Display  
   End With  
 
   On Error GoTo 0  
   Set OutMail = Nothing  
 
cleanup:  
   Set OutApp = Nothing  
   Application.ScreenUpdating = True  
End Sub  
 
 
но у нас на работе заменили оутлук не лотус. Теперь этот макрос не работает. Что нужно изменить в этом макросе чтобы письма отправлялись через лотус ?
 
> у нас на работе заменили оутлук не лотус  
 
Гы-ы... а у нас наоборот! Теперь постепенно забываю Лотус как кошмарный сон :)  
Вот кусок кода для создания письма, заполнения реквизитов и приаттачивания файла:  
 
   Dim notesOLE As Object  
   Dim maildb As Object            'NotesDatabase  
   Dim memo As Object              'NotesDocument  
   Dim body As Object              'NotesRichTextItem  
   Dim nav As Object               'NotesRichTextNavigator  
   Dim oRTStyle As Object          'NotesRichTextStyle  
   Dim AttachME As Object, EmbedObj1 As Object  
     
   Set notesOLE = CreateObject("Notes.NotesSession")  
   Set maildb = notesOLE.GETDATABASE("", "", False)  
     
   maildb.OPENMAIL 'locate the user's mail database.  
   Set memo = maildb.CREATEDOCUMENT()  
   memo.REPLACEITEMVALUE "Form", "Memo"  
     
   'Заполняем "реквизиты" письма (кому, копия, тема)  
 
   memo.REPLACEITEMVALUE "SendTo", Range("SendTo").Text  
   memo.REPLACEITEMVALUE "CopyTo", Range("CopyTo").Text  
   memo.REPLACEITEMVALUE "Subject", Range("Subject").Text  
 
   Set AttachME = memo.CREATERICHTEXTITEM("attachment1")  
   Set EmbedObj1 = AttachME.EMBEDOBJECT(1454, "attachment1", strArcFile, "") 'Required File Name
 
{quote}{login=Казанский}{date=13.12.2010 01:00}{thema=}{post}> у нас на работе заменили оутлук не лотус  
 
Гы-ы... а у нас наоборот! Теперь постепенно забываю Лотус как кошмарный сон :)  
Вот кусок кода для создания письма, заполнения реквизитов и приаттачивания файла:  
{/post}{/quote}  
 
пишет ошибку в строке Set notesOLE = CreateObject("Notes.NotesSession")
 
Tools->References->Lotus Notes Automation Classes
 
http://www.bygsoftware.com/Excel/VBA/email_from_lotus_notes.htm  
 
 
Email from Lotus Notes  
FAQ: How do I use Excel to send an e-mail when Lotus Notes is my e-mail system?  
 
 
A: Try this - I have used Lotus Notes at several client sites and this has worked for me with little or no amendment (watch out for line wrapping):    
 
Open a new module and paste in this code:  
 
Dim objNotesSession As Object  
Dim objNotesMailFile As Object  
Dim objNotesDocument As Object  
Dim objNotesField As Object  
 
Function SendMail()  
 
On Error GoTo SendMailError  
 
EMailSendTo = "put_an@address.here" '' Required - Send to address  
EMailCCTo = ""                      '' Optional  
EMailBCCTo = ""                     '' Optional  
 
''Establish Connection to Notes  
Set objNotesSession = CreateObject("Notes.NotesSession")  
 
''Establish Connection to Mail File  
''                                    .GETDATABASE("SERVER", "FILE")  
Set objNotesMailFile = objNotesSession.GETDATABASE("", "")  
''Open Mail  
objNotesMailFile.OPENMAIL  
 
''Create New Memo  
Set objNotesDocument = objNotesMailFile.CREATEDOCUMENT  
 
''Create 'Subject Field'  
Set objNotesField = objNotesDocument.APPENDITEMVALUE("Subject",  
EMailSubject)  
 
''Create 'Send To' Field  
Set objNotesField = objNotesDocument.APPENDITEMVALUE("SendTo", EMailSendTo)  
 
''Create 'Copy To' Field  
Set objNotesField = objNotesDocument.APPENDITEMVALUE("CopyTo", EMailCCTo)  
 
''Create 'Blind Copy To' Field  
Set objNotesField = objNotesDocument.APPENDITEMVALUE("BlindCopyTo",  
EMailBCCTo)  
 
''Create 'Body' of memo  
Set objNotesField = objNotesDocument.CREATERICHTEXTITEM("Body")  
 
With objNotesField  
   .APPENDTEXT "This e-mail is generated by an automated process."  
   .ADDNEWLINE 1  
   .APPENDTEXT "Please follow established contact procedures should you  
have any questions."  
   .ADDNEWLINE 2  
End With  
 
''Attach the file   --1454 indicate a file attachment  
''objNotesField = objNotesField.EMBEDOBJECT(1454, "", "C:\Temp\test.xls")  
objNotesField = objNotesField.EMBEDOBJECT(1454, "", ActiveWorkbook.FullName)  
 
''Send the e-mail  
objNotesDocument.Send (0)  
 
''Release storage  
Set objNotesSession = Nothing  
Set bjNotesSession = Nothing  
Set objNotesMailFile = Nothing  
Set objNotesDocument = Nothing  
Set objNotesField = Nothing  
 
''Set return code  
SendMail = True  
 
Exit Function  
 
SendMailError:  
Msg = "Error # " & Str(Err.Number) & " was generated by " _  
           & Err.Source & Chr(13) & Err.Description  
MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext  
 
SendMail = False  
 
End Function
 
Dim Maildb As Object  
Dim MailDoc As Object  
Dim Body As Object  
Dim Session As Object  
 
Set Session = CreateObject("Lotus.NotesSession")  
Call Session.Initialize(Password)  
 
Set Maildb = Session.GETDATABASE("", Dbaddress)  
If Not Maildb.IsOpen = True Then  
Call Maildb.Open  
End If  
Set MailDoc = Maildb.CREATEDOCUMENT  
Call MailDoc.ReplaceItemValue("Form", "Memo")  
Call MailDoc.ReplaceItemValue("SendTo", recipient)  
Call MailDoc.ReplaceItemValue("CopyTo", ccrecipient)  
Call MailDoc.ReplaceItemValue("BlindCopyTo", bccrecipient)  
Call MailDoc.ReplaceItemValue("Subject", Theme)  
Set Body = MailDoc.CREATERICHTEXTITEM("Body")  
Call Body.APPENDTEXT(Message_text)  
Call Body.ADDNEWLINE(2)  
Call Body.EMBEDOBJECT(1454, "", AttachmentAddress, "Attachment")  
MailDoc.SAVEMESSAGEONSEND = True  
Call MailDoc.ReplaceItemValue("PostedDate", Now())  
Call MailDoc.SEND(True)  
Set Maildb = Nothing  
Set MailDoc = Nothing  
Set Body = Nothing  
Set Session = Nothing  
 
 
Это та часть макроса, которая отвечает как раз за сборку письма и отправку адресату. AttachmentAddress - это моя переменная. Вы в данном случае можете задать любую на свой вкус.  
 
 
Так же переменными являются:  
 
recipient - адреса отправки. Если надо несколько адресов - через Trim(",")  
Dbaddress - адрес Вашей учетной записи на жестком диске (...\Lotus Notes\Data\a_...)  
ccrecipient - адреса тех, кого ставим в копию  
bccrecipient - скрытая копия  
Theme - тема письма  
Message_text - текст письма  
Password - пароль от при запуске Лотуса  
Body - сам текст письма  
 
Все переменные можно заменить текстом в теле макроса, а лучше присвоить им адреса ячеек и при вписывании значиний в эти ячейки будет меняться и настройка Вашего письма.
 
забыл вписать имя))  
 
Только у меня при этом не оставляет копию в папке Sent. Пока решения не нашел этой проблемы. Увы...
 
Пардон, за ошибку:  
 
Body - в данном случае трогать не стоит!
 
{quote}{login=Alex_DR}{date=13.12.2010 03:42}{thema=}{post}забыл вписать имя))  
 
Только у меня при этом не оставляет копию в папке Sent. Пока решения не нашел этой проблемы. Увы...{/post}{/quote}  
 
''Create New Memo  
Set objNotesDocument = objNotesMailFile.CREATEDOCUMENT  
 
objNotesDocument.SAVEMESSAGEONSEND = True
 
{quote}{login=Дмитрий}{date=13.12.2010 05:16}{thema=Re: }{post}{quote}{login=Alex_DR}{date=13.12.2010 03:42}{thema=}{post}забыл вписать имя))  
 
Только у меня при этом не оставляет копию в папке Sent. Пока решения не нашел этой проблемы. Увы...{/post}{/quote}  
 
''Create New Memo  
Set objNotesDocument = objNotesMailFile.CREATEDOCUMENT  
 
objNotesDocument.SAVEMESSAGEONSEND = True{/post}{/quote}  
 
http://opfr.natm.ru/help/help7_designer.nsf/f4b82fbb75e942a6852566ac0037f284/2405ed236229d2338525704­a0040b2cc?OpenDocument
 
{quote}{login=Hugo}{date=13.12.2010 03:26}{thema=}{post}Tools->References->Lotus Notes Automation Classes{/post}{/quote}  
 
у меня нет в References настройки Lotus Notes Automation Classes
 
Может Лотус криво встал, а может можно вручную этот файл выбрать...
 
{quote}{login=}{date=13.12.2010 03:40}{thema=}{post}Dim Maildb As Object  
 
Dbaddress - адрес Вашей учетной записи на жестком диске (...\Lotus Notes\Data\a_...)  
{/post}{/quote}  
 
еще забыл добавить (возможно это важно). Лотус у меня установлен не на компьютере, а на сервере в интернете. Возможно это является проблемой из-за которой у меня не срабатывает код.  
Но в экселе по команде "файл - сообщение - сообщение как сложение" все работает нормально и файлы прикладываются к письму.
 
Не знаю, но может сработает, если выбрать файл с сервера. Или скопировать эту библиотеку к себе?
 
Set Maildb = Session.GETDATABASE("", Dbaddress)  
Dbaddress - адрес Вашей учетной записи на жестком диске (...\Lotus Notes\Data\a_...)  
 
Вот о какой части макроса говорит Hugo. Переменная указывает на адрес учетки. Если у Вас Лотус установлен где-то на сервере, то возможно, стоит поискать адрес учетной записи там. Файл с .nsf-расширением
Страницы: 1
Читают тему
Наверх