【问题标题】:Sending Email with Lotus Notes - (Different Database) - Excel VBA使用 Lotus Notes 发送电子邮件 - (不同的数据库) - Excel VBA
【发布时间】:2018-05-11 10:34:49
【问题描述】:

我准备从 Lotus Notes 中的数据库(主数据库除外)发送电子邮件的 VBA 有一个小问题

当我从 lotus notes 的主数据库中发送相同的电子邮件时,(用户名数据库)我没有问题,它运行顺利。但是,相同的编码,我只是更改服务器和数据库名称,它发送电子邮件,但在 Lotus Notes 中显示消息屏幕为“您要保存更改吗?”我需要选择是或否,然后它会发送电子邮件。正如我所说,唯一的区别是编码中的数据库和服务器。

这是 Lotus Notes 中的消息:

这是 VBA 代码。

Sub SendWithLotus()
Dim NSession As Object
Dim NDatabase As Object
Dim NUIWorkSpace As Object
Dim NDoc As Object
Dim NUIdoc As Object
Set NSession = CreateObject("Notes.NotesSession")
Set NUIWorkSpace = CreateObject("Notes.NotesUIWorkspace")
Set NDatabase = NSession.GETDATABASE("XXXXX/XXX/XXXServer", "mail\YYYYY")

'=> 这是主要更改,如果我想从主邮件数据库发送,我不会在括号内输入任何内容,并且一切正常。

If Not NDatabase.IsOpen Then
    NDatabase.OPENMAIL
End If

'Create a new document

Set NDoc = NDatabase.CREATEDOCUMENT

With NDoc
    .SendTo = Range("O8").Value
    .CopyTo = ""
    .Subject = Range("O7").Value

    'Email body text, including marker text which will be replaced by the Excel cells

    .body = vbNewLine & vbNewLine & _
        "**Cell Contents**" & vbNewLine & vbNewLine & _
        ""

    .Save True, False
End With

'Edit the just-created document to copy and paste the Excel cells into it

Set NUIdoc = NUIWorkSpace.EDITDOCUMENT(True, NDoc)

With NUIdoc

    'Find the marker text in the Body item

    .GOTOFIELD ("Body")
    .FINDSTRING "**Cell Contents**"
    '.DESELECTALL            'Uncomment to leave the marker text in place (cells are inserted immediately before)

    'Replace it with the Excel cells

    Sheets("Sheet1").Range("A1:L58").CopyPicture xlScreen, xlBitmap
    .Paste
    Application.CutCopyMode = False
    .Send
    .Close
    NDoc.SAVEMESSAGEONSEND = True
End With

Set NSession = Nothing
    NDatabase = Nothing
    NDoc = Nothing
End Sub

原因可能是不同数据库的设置,或者我可能需要编写代码来关闭 Lotus Notes 中的消息框,但我不知道如何。

【问题讨论】:

  • 搜索VBA的发送键方法,发送回车键关闭消息。
  • 我正在为此努力寻找 :) 目前没有机会。谢谢。
  • 您对“主要变化”的评论含糊不清。你在说哪个括号,哪一行代码?只显示两个版本,其中一个被注释掉怎么样?
  • 您正在使用 NDoc 和 NUIdoc。这有点令人困惑。你没有展示你是如何创建它们的。这意味着我们必须猜测发生了什么。我明白你为什么使用 NUIdoc,但从那时起你可能应该停止使用 NDoc,但我看到你正在调用 NUIDoc.Send 和 NUIDoc.Close 方法,然后在你已经完成之后你'正在设置 NDoc.SaveMessageOnSend。这没什么意义。

标签: database vba excel lotus-notes


【解决方案1】:

很难说,但一个数据库的默认形式可能与另一个不同,而您的代码可能正在使用它。我建议在 Notes 文档中添加一个名为 SaveOptions 的字段并将值设置为 0。试试:

NUIDoc.Document.ReplaceItemValue("SaveOptions",0)

发送前。

【讨论】:

  • 谢谢,但是没用。在此编辑之后,它不会要求保存更改,而是将邮件草稿,准备好发送。
  • "'编辑刚刚创建的文档,将 Excel 单元格复制并粘贴到其中" 除了 NUIWorkSpace.EditDocument 不是 NDoc。 NDoc 是一个完全不同的对象。
  • 你在 NUIDoc 上调用 send 方法,但从不发送 NDoc(你只是保存它,)这就是它“坐”在那里的原因。
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多