从CSND上找到这么篇东东:
- 总体思路:
- 实现步骤:
- 1,客户端注册NOTES COM控件。(regsvr32 c:/lotus/notes/DOMOBJ.TLB)regsvr32 c:/lotus/notes/nlsxbe.dll
- 2,在公文数据库中,保存一些已经定制好的公文模板。已供新建公文时使用。
- 3,表单上加入VBScript将附件从服务器拆离到本地,然后起用WORD。(Word的宏安全性设为中)
- 4,公文模板中,WORD的文档的退出事件中加入VBA代码,实现文件上传到服务器。
- 注:为避免启动COM时出现提示口令输入框,可以通过API制作一个DLL来避开。(参考:API例子的)
- 相关代码:
- 表单上的VBScript代码:
- <SCRIPT LANGUAGE="VBScript">
- Sub Button1_OnClick
- dim s, dir, db, doc, eo, no, word, worddoc
- Set s = CreateObject("Lotus.NotesSession")
- Call s.Initialize
- Set db = s.GetDatabase("sh_server","intranet/webtemp.nsf")
- Set doc = db.getDocumentByUNID("30C11B03D279463548256C7D000DDD74")
- Set eo = doc.getAttachment("普通公文.doc")
- Call eo.ExtractFile( "C:/Temp/test.doc")
- 'Create the Word object:
- Set word = CreateObject("Word.Application") 'Create Word object
- Call word.documents.open( "C:/Temp/test.doc" )
- Set worddoc = word.activedocument 'Get a handle for the active document
- word.visible = True
- 'Call eo.remove
- 'Set ritem = doc.getFirstItem("rtfAttachment")
- 'Set no = ritem.EmbedObject(1454, "" , "C:/Temp/test.doc" )
- 'Call doc.save(True,False)administrator
- ad
- 'MsgBox db.filename + " & " + db.server,, "Databases on " + db.server
- End Sub
- </SCRIPT>
- 表单上的按钮代码:
- <INPUT NAME="Button1" TYPE="BUTTON" VALUE="编辑正文">
- Word模板上的VBA代码:
- Private Sub Document_Close()
- ActiveDocument.Save
- Dim s, dir, db, doc, eo, no, word, worddoc
- Set s = CreateObject("Lotus.NotesSession")
- Call s.Initialize
- Set db = s.GetDatabase("sh_server", "intranet/webtemp.nsf")
- Set doc = db.GetDocumentByUNID("C47E90193C0E4D3248256C780006A73E")
- Set eo = doc.GetAttachment("普通公文.doc")
- Call eo.Remove
- Set ritem = doc.GetFirstItem("rtfAttachment")
- Set no = ritem.EmbedObject(1454, "", "C:/Temp/test.doc")
- Call doc.Save(True, False)
- MsgBox db.FileName + " 文件已上传至服务器!& " + db.Server, , "Databases on " + db.Server
- End Sub
其他的都实现了,就是那个“提示口令输入框”还没能实现,现在是将密码直接写在JS中,查看源代码就可以看见了,安全性太差了。考虑用cookie来实现吧,还是不安全。这个DLL到底怎么写呐