![](/img/trans.png)
[英]vba code for copying body of a stationery mail into a new mail in lotus notes
[英]How to open a Lotus Notes New mail and send
我已经看到了几个宏,用于加载Lotus Notes并将附件放入并发送出去。 它几乎完成了发送电子邮件的操作,但是不知道如何发送文件夹,它可以处理PDF文件,但是我要发送的文件夹中有一堆PDF文件。 如何设置电子邮件的格式,使其显示为:“您好
请查收附件
(附件)
签名“
任何帮助表示赞赏,谢谢
Sub SendEmail()
Dim WatchRange As Range
Dim IntersectRange As Range
Dim x As Integer
Dim UserName As String
Dim MailDbName As String
Dim Recipient As Variant
Dim Maildb As Object
Dim MailDoc As Object
Dim Attachment As String
Dim Session As Object
Dim stSignature As String
With Application
.ScreenUpdating = False
.DisplayAlerts = False
' Open and locate current LOTUS NOTES User
Set Session = CreateObject("Notes.NotesSession")
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
Else
Maildb.OPENMAIL
End If
' Create New Mail and Address Title Handlers
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
Maildb.GetProfileDocument("CalendarProfile").GetItemValue("Signature")(0)
' Select range of e-mail addresses
MailDoc.SendTo = "joe bloggs"
MailDoc.subject = "Work"
MailDoc.Body = "Hello" & " " & " Please find attachment."
MailDoc.SAVEMESSAGEONSEND = True
Attachment = "c:\03-11\4267.pdf"
If Attachment <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "")
On Error Resume Next
MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
MailDoc.PostedDate = Now()
On Error GoTo errorhandler1
MailDoc.SEND 0, Recipient
Set Maildb = Nothing
Set MailDoc = Nothing
Set Session = Nothing
.ScreenUpdating = True
.DisplayAlerts = True
On Error GoTo errorhandler1
Set Maildb = Nothing
Set MailDoc = Nothing
Set Session = Nothing
End With
End Sub
我更改了宏,现在添加了签名,但格式错误,并且没有附加文件。
Sub SendEmail()
Dim WatchRange As Range
Dim IntersectRange As Range
Dim x As Integer
Dim UserName As String
Dim MailDbName As String
Dim Recipient As Variant
Dim Maildb As Object
Dim MailDoc As Object
Dim Attachment As String
Dim Session As Object
Dim stSignature As String
Dim ws As Object 'Lotus Workspace
Dim objProfile As Object
Dim rtiSig As Object, rtitem As Object, rtiNew As Object
Dim uiMemo As Object
Dim strToArray() As String, strCCArray() As String, strBccArray() As String
Dim strTo As String, strCC As String, strBcc As String, _
strObject As String, strBody As String, strAttachment As String, blnSaveit As Boolean
Dim strSignText As String, strMemoUNID As String
Dim intSignOption As Integer
With Application
.ScreenUpdating = False
.DisplayAlerts = False
' Open and locate current LOTUS NOTES User
Set Session = CreateObject("Notes.NotesSession")
Set ws = CreateObject("Notes.NotesUIWorkspace")
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
Else
Maildb.OPENMAIL
End If
' Create New Mail and Address Title Handlers
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
stSignature = Maildb.GetProfileDocument("CalendarProfile").GetItemValue("Signature")(0)
' Select range of e-mail addresses
MailDoc.SendTo = "JJunoir"
MailDoc.subject = ""
MailDoc.Body = "Hello" & " " & " Please find attachment,"
MailDoc.SAVEMESSAGEONSEND = True
Set objProfile = Maildb.GETPROFILEDOCUMENT("CalendarProfile")
intSignOption = objProfile.GETITEMVALUE("SignatureOption")(0)
strSignText = objProfile.GETITEMVALUE("Signature")(0)
Attachment = "c:\Debit Notes 03-11\"
If strAttachment <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", strAttachment, "Attachment")
On Error Resume Next
MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
'Open memo in ui
Set uiMemo = ws.EDITDOCUMENT(True, MailDoc)
Call uiMemo.GotoField("Body")
'Check if the signature is automatically inserted
If objProfile.GETITEMVALUE("EnableSignature")(0) <> 1 Then
If intSignOption = 2 Then
Call uiMemo.ImportItem(objProfile, "Signature_Rich")
End If
End If
Call uiMemo.GotoField("Body")
'Save the mail doc
strMemoUNID = uiMemo.DOCUMENT.UNIVERSALID
uiMemo.DOCUMENT.MailOptions = "0"
Call uiMemo.Save
uiMemo.DOCUMENT.SaveOptions = "0"
Call uiMemo.Close
Set uiMemo = Nothing
Set MailDoc = Nothing
'Get the text and the signature
Set MailDoc = Maildb.GETDOCUMENTBYUNID(strMemoUNID)
Set rtiSig = MailDoc.GETFIRSTITEM("Body")
Set rtiNew = MailDoc.CREATERICHTEXTITEM("rtiTemp")
Call rtiNew.APPENDTEXT(strBody)
Call rtiNew.APPENDTEXT(Chr(10)): Call rtiNew.APPENDTEXT(Chr(10))
Call rtiNew.APPENDRTITEM(rtiSig)
'Remove actual body to replace it with the new one
Call MailDoc.RemoveItem("Body")
Set rtitem = MailDoc.CREATERICHTEXTITEM("Body")
Call rtitem.APPENDRTITEM(rtiNew)
MailDoc.Save False, False
Set uiMemo = ws.EDITDOCUMENT(True, MailDoc)
MailDoc.PostedDate = Now()
On Error GoTo errorhandler1
MailDoc.SEND 0, Recipient
Set Maildb = Nothing
Set MailDoc = Nothing
Set Session = Nothing
.ScreenUpdating = True
.DisplayAlerts = True
errorhandler1:
Set Maildb = Nothing
Set MailDoc = Nothing
Set Session = Nothing
End With
End Sub
这是它产生的,没有附件亲切问候J JuniorHello请找到附件,
如果您的目标是操纵Lotus Notes客户端用户界面,则可以使用“ Notes.NotesSession”而不是“ Lotus.NotesSession”来正确启动一半。 笔记。” 前缀使您获得OLE类,而不是使用“莲花”前缀将获得的COM类,并且您肯定需要使用OLE类-但您仍然选择了错误的根对象。
在OLE和COM类中都可用的NotesSession类和所有从其派生的类都称为“后端类”,这意味着它们根本不会操纵用户界面。
如果要操作UI,则需要使用“前端类”,其根对象是“ Notes.NotesUIWorkspace ”。 在许多情况下,您可能会发现需要后端和前端类的组合。 例如, NotesUIWorkspace.EditDocument (前端)带有一个NotesDocument (后端)参数,允许您通过在幕后查找文档来打开找到的文档的UI。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.