【发布时间】: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