如何使用VBA显示应用程序窗口? (莲花便笺)

时间:2016-12-05 10:01:19

标签: vba lotus-notes

我希望在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

1 个答案:

答案 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)