下面利用LOTUSSCRIP编程实现将WORD嵌入到表单的BODY域中,WORDEDITING域用来控制表单中的四个操作按钮在进入WORD中显示“返回表单”,不在WORD中时显示另外三个操作按钮,其他两个域用来控制嵌入的是WORD,而不是其他应用程序。
在表单中定义下述变量:
Dim rtitem As notesrichtextitem
Dim oleobject As Variant
Dim embed As notesembeddedobject
在对“编辑WORD文档”操作的CLICK事件中加入LotusScrip脚本:
Sub Click(Source As Button)
Dim s As New notessession
Dim w As New notesuiworkspace
Dim uidoc As notesuidocument
Dim doc As notesdocument
Dim user As String
Set uidoc=w.currentdocument
Set doc=uidoc.document
Dim solefield As String
doc.wordediting="1"
Call uidoc.refreshhideformulas
If doc.hasitem("$oleobjprogid") Then
solefield=doc.~$oleobjfield(0)
If uidoc.isnewdoc Then
'如果是新建文件,则创建嵌入对象
uidoc.refreshhideformulas
uidoc.gotofield(solefield)
Call uidoc.createobject("oleobject",doc.~$oleobjprogid(0),"")
Else
'如果不是新建文件,则获取嵌入对象
if (doc.hasembedded) Then
Set rtitem=doc.getfirstitem(solefield)
Set rtitem=doc.getfirstitem("body")
Set embed=rtitem.embeddedobjects(0)
user = s.commonusername
Set oleobject=uidoc.getobject(embed.name)
'记录修改痕迹
oleobject.trackrevisions=True
'不打印修改痕迹
oleobject.printrevisions=False
'不显示痕迹
oleobject.showrevisions=False
'记录在WORD中编辑的当前用户
oleobject.parent.username=user
oleobject.parent.userinitials=user
End If
Sub Click(Source As Button)
Dim s As New notessession
Dim w As New notesuiworkspace
Dim uidoc As notesuidocument
Dim doc As notesdocument
Dim user As String
Set uidoc=w.currentdocument
Set doc=uidoc.document
Dim solefield As String
Dim oleobject As Variant
If doc.hasitem("$oleobjprogid") Then
solefield=doc.~$oleobjfield(0)
If uidoc.isnewdoc Then
uidoc.refreshhideformulas
uidoc.gotofield(solefield)
uidoc.gotofield("body")
If (doc.hasembedded) Then
uidoc.editmode=True
doc.wordediting="0"
Call uidoc.refreshhideformulas
Set rtitem=doc.getfirstitem(solefield)
Set rtitem=doc.getfirstitem("body")
Set embed=rtitem.embeddedobjects(0)
user = s.commonusername
Set oleobject=uidoc.getobject(embed.name)