如何显示带有 VBA 的应用程序的 window? (莲花便笺)

How to show up a window of an application with VBA ? (Lotus Notes)

我想在 VBA 代码在 Lotus Notes 中写入邮件时显示 Lotus Notes Window。我希望在所有操作期间显示 Lotus Notes window。

我试过这个代码:

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 保持打开和可见。 我假设 "Visible" 不应该以这种方式使用。我遇到了这个错误:

Execution error '438'
object doesn't support this property or method

祝您事业顺利,Lotus Notes 的 OLE/COM 引擎是过时的,调试起来非常痛苦。

根据您的代码,我假设您对 LotusScript 的经验很少,您使用的编程范例在 LotusScript 中不起作用。

一般来说,我会建议您首先编写在 Notes 客户端中运行良好的代码,只有当它工作时,然后将其移植到 VBA。这里集成的帮助文件是您的朋友,它是 IBM 为 Domino/Notes 平台制作体面文档时的最后残余之一。您将不得不思考几个奇怪的概念(在这种特殊情况下,前端和后端文档之间的区别),并处理大量令人抓狂的错误。

以下将执行您希望它执行的操作。请注意,后端文档在显示在工作区之前已保存,这是为了能够显示作为邮件正文的富文本字段。

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)