免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3131 | 回复: 1
打印 上一主题 下一主题

[Lotus] 如何使用MS Word实现 Batch打印 Notes文档 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-10 23:54 |只看该作者 |倒序浏览
前两天上了个帖子,询问如何batch打印文档,因为用户要one button click 完成所有打印工作,输入的是开始时间和结束时间。
经研究,notes script并没有支持batch打印的功能,唯一的notesuiview.print,而这个命令需要先选中要打印的文档,也就是当前视图所有要打印的文档的的前面打勾,我也没发现这个操作能够用lotus script自动生成。
以下提供另一种解决方法,通过生成word文档来打印Notes文档,文档比较整齐,你可以根据需要随意美化之。

1.定义word template: 这里指的template,本身还是word document,只是在打印时用作模版,生成相应的(多个)文档.
*. 定义“书签”:点击“插入”-〉“书签”。

“书签”是 Word文档中的域,与Notes form中定义的域一样的作用,通过程序(Lotus Script)把值赋给相应的书签,在Word文档中就相当于填写了相应的内容。

*.在word文档中插入书签: 。
首先打开word ,点击“插入”-〉“书签”, 打开当前word文档中定义的书签. 如要添加书签,需要把鼠标首先移动到word文档相应的位置,再点击 “插入“-> ”书签“,在“书签名字“一栏输入名字,再点击"添加",相应的书签就添加到文档上了。
*. 察看Word文档中定义的书签:点击“插入”-〉“书签”,选中要查看的书签名字,点击”定位”.你将看到你是在那定义的书签,如果像修改定义的书签,要先删除,再添加.

上传了一个已经定义好书签的word文档,大家可以参考.

2. 使用lotus script 把Notes document中的值传到word 文档中,注意的是,在保存的使用要保存成另外的名字,保持原来的 word文档是”干净的”.

下面的script可以嵌在action,button,中使用.

Sub printWordPO ( reqDoc As NotesDocument )
       
' reqDoc is the Notes document ready to be printed.
‘reqDoc是要打印的 notes文档的名字.       
        On Error Goto ErrorHandler       
        Dim db As NotesDatabase
        Dim filename As String
        Dim pathname As String       
        Dim fileExt As String
        Dim wordPODoc As String
        Dim view As NotesView
        Dim dc As NotesDocumentCollection
        Dim rti As NotesRichTextItem
        Dim WordDoc As Variant
        Dim wdFormatDocument As Variant
        Dim WordObj As Variant
        Dim fldName As String
        Dim fldValue As String
        Dim errMsg$
        Set session = New NotesSession
        Set db = session.CurrentDatabase
       
        'Path to Word document template with bookmarks.
‘定义word 文档的位置.
        pathName = "c:\WO\"
        filename = "WO"
        fileExt = ".doc" ' Active Word, open html and save as .doc
       
        Set WordObj = CreateObject("Word.Application.8")       
        WordObj.Documents.Open pathname$ & fileName & fileExt
        Set WordDoc = WordObj.ActiveDocument
        WordDoc.Application.Visible=False
       
        ' loop through Company fields, make bookmark changes, and replace booksmarks in word doc
       
       
        Call SetBookmark ( WordDoc , "AssignTo"  , reqdoc.AssignTo(0) )
        Call SetBookmark ( WordDoc , "WOType"  , reqdoc.WOType(0) )
        Call SetBookmark ( WordDoc , "Supervisor"  , reqdoc.Supervisor(0) )
        Call SetBookmark ( WordDoc , "SSDate"  , reqdoc.SSDate(0) )
        Call SetBookmark ( WordDoc , "Frequency"  , reqdoc.Frequency(0) )
        Call SetBookmark ( WordDoc , "TaskInstruction"  , reqdoc.TaskInstruction(0) )
        Call SetBookmark ( WordDoc , "Title"  , reqdoc.Title(0) )
        Call SetBookmark ( WordDoc , "WorkOrderNum"  , reqdoc.WorkOrderNum(0) )
        Call SetBookmark ( WordDoc , "PrintDate"  , reqdoc.PrintDate(0) )
       
       
        ' Equipment and location
‘下面这些是垃圾.为了保证打印的完整性.
        If reqdoc.equipment1<>"" Then
                Call SetBookmark ( WordDoc , "equipment1"  , reqdoc.equipment1(0) )
                Call SetBookmark ( WordDoc , "location1"  , reqdoc.location1(0) )               
        End If
        If reqdoc.equipment2<>"" Then
                Call SetBookmark ( WordDoc , "equipment2"  , reqdoc.equipment2(0) )
                Call SetBookmark ( WordDoc , "location2"  , reqdoc.location2(0) )               
        End If
        If reqdoc.equipment3<>"" Then
                Call SetBookmark ( WordDoc , "equipment3"  , reqdoc.equipment3(0) )
                Call SetBookmark ( WordDoc , "location3"  , reqdoc.location3(0) )               
        End If
        If reqdoc.equipment4<>"" Then
                Call SetBookmark ( WordDoc , "equipment4"  , reqdoc.equipment4(0) )
                Call SetBookmark ( WordDoc , "location4"  , reqdoc.location4(0) )               
        End If
        If reqdoc.equipment5<>"" Then
                Call SetBookmark ( WordDoc , "equipment5"  , reqdoc.equipment5(0) )
                Call SetBookmark ( WordDoc , "location5"  , reqdoc.location5(0) )               
        End If
        If reqdoc.equipment6<>"" Then
                Call SetBookmark ( WordDoc , "equipment6"  , reqdoc.equipment6(0) )
                Call SetBookmark ( WordDoc , "location6"  , reqdoc.location6(0) )               
        End If
        If reqdoc.equipment7<>"" Then
                Call SetBookmark ( WordDoc , "equipment7"  , reqdoc.equipment7(0) )
                Call SetBookmark ( WordDoc , "location7"  , reqdoc.location7(0) )               
        End If
        If reqdoc.equipment8<>"" Then
                Call SetBookmark ( WordDoc , "equipment8"  , reqdoc.equipment8(0) )
                Call SetBookmark ( WordDoc , "location8"  , reqdoc.location8(0) )               
        End If
        If reqdoc.equipment9<>"" Then
                Call SetBookmark ( WordDoc , "equipment9"  , reqdoc.equipment9(0) )
                Call SetBookmark ( WordDoc , "location9"  , reqdoc.location9(0) )               
        End If
        If reqdoc.equipment10<>"" Then
                Call SetBookmark ( WordDoc , "equipment10"  , reqdoc.equipment10(0) )
                Call SetBookmark ( WordDoc , "location10"  , reqdoc.location10(0) )               
        End If
        If reqdoc.equipment11<>"" Then
                Call SetBookmark ( WordDoc , "equipment11"  , reqdoc.equipment11(0) )
                Call SetBookmark ( WordDoc , "location11"  , reqdoc.location11(0) )               
        End If
        If reqdoc.equipment12<>"" Then
                Call SetBookmark ( WordDoc , "equipment12"  , reqdoc.equipment12(0) )
                Call SetBookmark ( WordDoc , "location12"  , reqdoc.location12(0) )               
        End If
       
        ‘垃圾结束.
    ' file name for extracting and attaching
        wordPODocName = pathName & fileName & reqDoc.WorkOrderNum(0) & fileExt
       
‘这句非常关键,如果使用原来的名字,则原来的word文档就被冲掉了.

        WordDoc.SaveAs  wordPODocName , wdFormatDocument
       
        WordDoc.Application.PrintOut
        ' clean up word objects
        WordDoc.Close
        WordDoc = Null
        WordObj = Null
        Exit Sub
ErrorHandler:
        errMsg="Error in Common.CreateWordPO  " & Str$(Err) & ": " & Error$ & "-- Line: #>" & Cstr(Erl)
'        WriteErrDoc ( errMsg )
        Resume Next
End Sub

Function SetBookmark( wrdDoc As Variant, fieldName$, itemValue$ ) As Integer
        ' Set's the value of a bookmark in a Word document
        On Error Goto ErrorHandler       
        Dim range As Variant
        On Error Goto ErrorHandler       
        Set range = wrdDoc.Bookmarks( fieldName$ ).range
        range.end = range.end
        range.text = itemValue$
        SetBookmark = True
        Exit Function
ErrorHandler:
        Dim errMsg$
        errMsg= "Error in Common.SetBookmark  " & Str$(Err) & ": " & Error$ & "-- Line: #>" & Cstr(Erl)
'        WriteErrDoc ( errMsg )
        SetBookmark = False       
        Exit Function
End Function

WO_DOC.zip

2.93 KB, 下载次数: 105

word 模版

论坛徽章:
0
2 [报告]
发表于 2006-04-11 09:12 |只看该作者
很好、感谢分享~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP