首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用Excel打开Lotus草案,以替换值

用Excel打开Lotus草案,以替换值
EN

Stack Overflow用户
提问于 2013-11-03 07:58:47
回答 5查看 3.1K关注 0票数 0

我试图编写一个Excel代码,它允许我自动创建和发送Lotus电子邮件。我面临的问题是很难创建一封富文本电子邮件,因此我认为打开电子邮件草稿会更容易,使用标记文本将被替换(此处用于粘贴EXCEL单元格),然后只需:

代码语言:javascript
代码运行次数:0
运行
复制
.GotoField ("Body")
.FINDSTRING "PASTE EXCEL CELLS HERE"'

并替换。

对于如何打开电子邮件草稿有任何帮助吗?作为.CreateDocument属性的东西?

非常感谢!

EN

回答 5

Stack Overflow用户

发布于 2013-11-04 16:41:34

其他人提出了有趣的概念,但最健壮的方法是在映射到Body Rich项的MIME环境中使用HTML。使用NotesSession..Convertmime = False,您可以将主体构建为HTML,然后发送消息。基于Joseph 这里的帖子,LotusScript等效如下:

代码语言:javascript
代码运行次数:0
运行
复制
Sub Initialize()
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim stime as Single

    Dim alog As New NotesLog("debug")
    Call alog.OpenAgentLog()

    stime = Timer
    On Error GoTo eh

    Dim doc As NotesDocument
    Dim body As NotesMIMEEntity
    Dim header As NotesMIMEHeader
    Dim stream As NotesStream
    Dim child As NotesMIMEEntity
    Dim sendTo As String
    Dim subject As String

    s.Convertmime = False
    sendto = s.Effectiveusername
    subject = "Demo Message"

    Set db= s.Currentdatabase
    Set doc=db.Createdocument()
    Set stream = s.CreateStream
    Set body = doc.CreateMIMEEntity
    Set header = body.CreateHeader({MIME-Version})
    Call header.SetHeaderVal("1.0")
    Set header = body.CreateHeader("Content-Type")
    Call header.SetHeaderValAndParams({multipart/alternative;boundary="=NextPart_="})
    'Add the to field
    Set header = body.CreateHeader("To")
    Call header.SetHeaderVal(SendTo)

    'Add Subject Line
    Set header = body.CreateHeader("Subject")
    Call header.SetHeaderVal(subject)

    'Add the body of the message
    Set child = body.CreateChildEntity

    Call stream.WriteText("<h1>Demo HTML Message</h1>")
    Call stream.WriteText(|<table colspacing="0" colpadding="0" border="none">|)
    Call stream.WriteText(|<tr><td>cell 1.1</td><td>cell 1.2</td><td>cell 1.3</td></tr>|)
    Call stream.WriteText(|<tr><td>cell 2.1</td><td>cell 2.2</td><td>cell 2.3</td></tr>|)
    Call stream.WriteText(|<tr><td>cell 3.1</td><td>cell 3.2</td><td>cell 3.3</td></tr>|)
    Call stream.WriteText(|</table>|)
    Call stream.WriteText(|<div class="headerlogo">|)
    Call stream.WriteText(|<!-- ...some more HTML -->|)

    Call child.setContentFromText(stream, {text/html;charset="iso-8859-1"}, ENC_NONE)
    Call stream.Truncate 'Not sure if I need this
    Call stream.Close
    Call doc.CloseMIMEEntities(True)
    Call doc.replaceItemValue("Form", "Memo")
    Call doc.Send(False, sendTo)


es:
    Exit Sub
eh:
    Dim emsg$
    emsg = Error & " at " & Erl & " in " & s.Currentagent.name
    Call alog.logError(Err, emsg)
    MsgBox "ERROR: " & Err & ": " & emsg
    Resume es
End Sub

所有这些都应该很容易地在Excel中转换为VBA。当然,你可以用你的HTML做你想要的复杂的事情。

票数 1
EN

Stack Overflow用户

发布于 2013-11-03 23:05:14

“草案”一词在这里可能是不恰当的,但“模板”一词也是如此。在Lotus中,两者都有特定的含义,这并不是您真正想要的。用户可以删除草稿,而模板则完全不同。所以我们把它叫做样板信息。

我会在Domino服务器上创建一个特殊的邮件数据库(NSF文件),它只是作为样板的存储库。您可以在该邮件数据库中创建一个名为“样板”的文件夹。使用Designer,您可以修改该文件夹的设计,使Subject列成为视图中的第一列,并对其进行排序。

一旦完成了这些操作,并创建了一些样板并将它们保存在文件夹中,就可以使用VBA执行NotesSession.getDatabase调用、NotesDatabase.getView调用(这用于文件夹和视图),然后使用NotesView.getDocumentByKey()检索指定给它的主题的特定样板。请注意,您不必将此文档复制到用户的邮件数据库中才能将其发送。

票数 0
EN

Stack Overflow用户

发布于 2013-11-04 05:03:31

你想做的不是小事,但你提到了一封电子邮件草稿,所以可能会有一个解决办法。

在邮件设置中,可以指定签名文件,该签名文件可以是磁盘上的外部html文件。因此,修改签名文件,然后创建您的新邮件,然后以您想要的方式填充body字段。

对于示例代码,在备忘录表单中应该有一个按钮来指定要使用的签名文件。你可以用它作为基线。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19750961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档