我希望在VBA代码在Lotus Notes中编写邮件时显示Lotus Notes窗口。我希望在所有操作期间显示Lotus Notes窗口。
我试过这段代码:
Sub init_mail()
Dim oSess As Object
Dim ntsServer As String
Dim ntsMailFile As String
Set oSess = CreateObject("Notes.NotesSession")
ntsServer = oSess.GetEnvironmentString("MailServer", True)
ntsMailFile = oSess.GetEnvironmentString("MailFile", True)
Set odb = oSess.GetDatabase(ntsServer, ntsMailFile)
Set Workspace = CreateObject("Notes.NotesUIWorkspace")
Call Workspace.composedocument(, , "Memo")
Set uidoc = Workspace.CURRENTDOCUMENT
uidoc.Document.deliveryreport = "C"
uidoc.Document.Importance = "Haute"
uidoc.Visible = true
我认为Visible可以说Lotus Note保持开放和可见。 我假设"可见"不应该以这种方式使用。我有这个错误:
Execution error '438'
object doesn't support this property or method
答案 0 :(得分:1)
祝你好运,Lotus Notes的OLE / COM引擎是antedeluvian,调试很痛苦。
从你的代码中我可以假设你对LotusScript没什么经验,你使用的编程范例在LotusScript中不起作用。
通常我建议您首先编写在Notes客户端中运行良好的代码,并且只有在它工作时,才将其移植到VBA。这里集成的帮助文件是你的朋友,它是IBM为Domino / Notes平台提供体面文档时的最后一个遗留物。您将不得不围绕几个奇怪的概念(在这种特殊情况下,前端和后端文档之间的差异),并处理大量令人抓狂的错误。
以下将执行您希望它执行的操作。请注意,后端文档在显示在工作区之前会被保存,这样就可以显示富文本字段,它是Mail的主体。
Dim oSess As Object
Set oSess = CreateObject("Notes.NotesSession")
Dim ntsServer As String
ntsServer = oSess.GetEnvironmentString("MailServer", True)
Dim ntsMailFile As String
ntsMailFile = oSess.GetEnvironmentString("MailFile", True)
Dim Maildb As Object
Set Maildb = oSess.GetDatabase(ntsServer, ntsMailFile)
If Not Maildb.IsOpen Then
Maildb.OPENMAIL
End If
Set MailDoc = Maildb.CREATEDOCUMENT
Call MailDoc.REPLACEITEMVALUE("Form", "Memo")
Call MailDoc.REPLACEITEMVALUE("SendTo", "Joe Example")
Call MailDoc.REPLACEITEMVALUE("Subject", "Subject Text")
Set Body = MailDoc.CREATERICHTEXTITEM("Body")
Call Body.APPENDTEXT("Body text here")
Call Body.ADDNEWLINE(2)
Call MailDoc.Save(True, True)
Set Workspace = CreateObject("Notes.NotesUIWorkspace")
Call Workspace.EditDocument(True, MailDoc)