Notes與Office的介面

genusBIT發表於2008-07-28

---- 本文介紹了Notes 與 Office的三種介面程式的編制,它們可實現將 Notes資料引入Office程式中,實現在Notes中較難實現的標籤列印、表格列印以及修訂顯示等功能。

利用Word“郵件合併”功能
----Word的郵件合併功能可以將資料來源的資料與主文件的資料合併,主要用於生成標籤和信封等具有固定格式的文件。我們可以利用這個功能,將 Notes資料庫中的資料引出,生成固定格式的文件,如:圖書的小標籤、信封列印等。

----步驟如下:

建立郵件合併所需的資料來源文件模板(Source.dot)和主文件模板(Main.dot)。

在Notes資料庫中,建立檢視、表單,將 Source.dot、Main.dot作為附件附加到表單中, 供後面的程式呼叫此模板生成文件。

通過Script程式設計實現用Notes文件內容生成Word文件。下面是源程式的主要部分,該程式在 Notes中點選“列印”按鈕,或在操作選單中選擇“列印”時執行:

----①啟動WORD。 Set wordapp=GetObject(“",“Word.Application.8") If Isempty(wordapp) Then Set wordapp = CreateObject(“Word.Application.8") If Isempty(wordapp) Then Messagebox “請先安裝WORD 97。",0+64,“列印" Exit Sub End If End If

----②產生資料來源檔案。


Call wordapp.documents.add
Set WordSourceDoc= wordapp.activedocument
Set selection=wordapp.selection
Call WordSourceDoc.Tables.Add
(wordapp.selection.Range,2, 25)
Call selection.TypeText (“圖書名稱")
Call Selection.MoveRight(12)
Call selection.TypeText (“圖書編號")
Call Selection.MoveRight(12)
Call selection.TypeText (“購入日期")
Call Selection.MoveRight(12)
……………
//生成資料來源表頭

Set CurDoc = uidoc.Document
Call selection.TypeText (CurDoc.Title(0))
Call Selection.MoveRight(12)
Call selection.TypeText (CurDoc.Code(0))
Call Selection.MoveRight(12)
Call selection.TypeText (CurDoc.Date(0))
Call Selection.MoveRight(12)
……………
//將 Notes文件中的資料填入資料來源表中
FileName$=“c:\圖書資料來源.doc"
Call WordSourceDoc.SaveAs (“c:\ 圖書資料來源.Doc")
//儲存資料來源檔案

----③產生郵件合併主文件。


Set view=CurDb.GetView(“圖書列印配置 ")
Set tspzdoc=view.GetDocumentByKey(CurDoc.P_type(0),True)
If tslxpzdoc Is Nothing Then
Messagebox “找不到配置文件,請重新生成
"+key+“編輯配置文件。",0+64,“檢測配置文件"
Exit Sub
End If
Set ts_label=tspzdoc.GetAttachment(“圖書標籤.dot")
If ts_label Is Nothing Then
Messagebox “配置文件中找不到 WORD"
Exit Sub
End If
FileName$=“c:\ 圖書標籤.dot"
Call ts_label.ExtractFile(FileName$)
WordApp.Documents.Open (“C:\ 圖書標籤.dot")

----④執行郵件合併。


With WordApp.ActiveDocument. MailMerge
.Destination =0
.Execute
End With
Call wordapp.Documents(“圖書標籤.dot").Close (0,0,False)
Call wordapp.Documents(“圖書資料來源.doc").Close (0,0,False)

利用Word表格實現介面
----表格在日常辦公中經常用到,用Notes表單或檢視列印表格,不僅格式簡單,而且不夠美觀,很難滿足需要。此時可將 Notes資料庫文件引出,利用Word生成表格。

----步驟如下:

建立表格文件模板,如:科技檔案案卷目錄 .dot。

在Notes資料庫中,建立檢視、表單,表單中包括每頁表格的行數、列印的起始行和列, 還包括一個RTF域,將文件模板引入這個RTF域,生成文件。

Script程式設計實現用Notes文件內容生成Word文件。下面是源程式的主要部分,該程式在 Notes中點選“列印”按鈕,或在操作選單中選擇“列印”時執行。

----①獲得列印設定以及列印模板。


Set doc = docs.Getfirstdocument
If doc Is Nothing Then
Msgbox “沒有選中列印文件",
Mb_Ok+Mb_IconStop,“停止"
Exit Sub
End If
Set Worddoc = ExtractWord(“科技檔案案卷目錄.")
If Worddoc Is Nothing Then Exit Sub
//取得列印模板文件
Num_BeginH=Worddoc .Num_BeginH(0)
Num_BeginL=Worddoc.Num_BeginL(0)
Num_HS = Worddoc.Num_HS(0)
//取得列印設定,依次為開始行、開始列、每頁列印行數

----②啟動Word,根據Notes文件提供的表格模板生成Word 文件。


Set Tempdoc = CreateObject(“Word.Document.8")
Set Wordapp = Tempdoc.Application
Set WordBasic = Wordapp.WordBasic
WordBasic.FileNew Worddoc.Txt_PathName(0)

----③將Notes資料庫的內容引入生成的Word文件中,生 成固定格式的表格。


Items = Worddoc.Txt_Items
Pageno = 1
Row = 1
While Not(doc Is Nothing)
If Row = 1 Then
If Pageno = 1 Then
Set Table = Wordapp.ActiveDocument.Tables(1)
WordBasic.EditSelectAll
Wordbasic.Editcop y
Table. Cell(Num_BeginH,Num_BeginL).Select
Else
wordapp.Selection.MoveRight 1,2
Wordbasic.InsertPagebreak
WordBasic.EditPaste
Set WordSelection = Wordapp.Selection
WordSelection.Delete 1,1
Set Table = Wordapp.ActiveDocument.Tables(Pageno)
Table.Cell(Num_BeginH, Num_BeginL).select
End If
Else
End If
For i = 0 To Ubound(Items)
InsertStr =doc.GetItemvalue(Items(i))
Wordbasic.insert Cstr(InsertStr(0))
End If
If i = Ubound(Items) And Row = Num_HS ThenElse
Wordbas ic.NextCell
End If
Next
Row = Row + 1
If Row > Num_HS Then
Row = 1
Pageno = Pageno +1
End If
Wend
WordBasic.Appshow
Wordapp.WindowState = 1
End Sub

利用Word“修訂”功能 實現修改痕跡保留功能
---- 在辦公自動化系統必需的公文子系統中,發文流程必然涉及到正文的修改。根據檔案工作的要求,修改的原稿必需保留,這就要求發文正文的修改痕跡必需保留。要在Notes中做到這一點是非常困難的。在 Word中包含一個修訂功能, 如果啟用了修訂功能, Microsoft Word 將使用修訂標記來標記修訂。文件審閱完畢之後, 可以根據不同的文字顏色區分出不同審閱者所做的修改。

----步驟如下:

----1. 建立一個Word文件,文件中包含以下巨集。

----①檢視痕跡。


Sub 檢視痕跡()
With ActiveDocument
.TrackRevisions = False
//標記對指定文件的修改
.PrintRevisions = True
//在列印文件的同時列印修訂標記
.ShowRevisions = True
//在螢幕上顯示對指定文件的修訂
End With
End Sub

----②不檢視痕跡。< /SPAN>


Sub 不檢視痕跡()
With ActiveDocument
.TrackRevisions = False
.PrintRevisions = False
.ShowRevisions = False
End With
End Sub

----③儲存退出。


Sub 儲存退出()
ActiveDocument.Save
ActiveDocument.Close
End Sub

----2.將該文件作為物件在表單中建立,注意將其顯示為圖表 形式。

----3.將Notes中的使用者名稱轉入Word中,以便生成標註。該程式可在資料庫的PostOpen事件中觸發,主要程式如下。


Dim Wordapp As Variant
Set Wordapp = CreateObject(“Word.Document.8")
If Wordapp.Application.UserName
< > Session.CommonUserName Then
Wordapp.Application.UserName =
Session.CommonUserName
//設定Word使用者名稱
End If
End Function

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14751907/viewspace-411999/,如需轉載,請註明出處,否則將追究法律責任。

相關文章