Word中自動(dòng)出卷
1 總體設(shè)計(jì)方案 (1)建立試題庫及設(shè)計(jì)含固定卷首的空白試卷。WORD文檔要從ACCESS數(shù)據(jù)庫形式的試題庫中調(diào)用試題,是Microsoft Office應(yīng)用程序之間的信息交換。根據(jù)需要可設(shè)計(jì)一個(gè)便于執(zhí)行各種操作,包括具有增、刪及調(diào)用功能的ACCESS數(shù)據(jù)庫(本例庫名為pxp.mdb),庫中含填空題、選擇題、判斷題、問答題及綜合題等各類題型的表(如填空題對應(yīng)于表pxptkt)。試卷往往可以有固定的卷首格式,故預(yù)先設(shè)計(jì)含固定卷首(圖1)的一空白試卷供程序調(diào)用。 (2)創(chuàng)建應(yīng)用程序界面。自動(dòng)出卷所涉及的試題提取、編寫題頭、試卷排版、試卷分析、保存試卷及打印輸出等任務(wù)都在同一界面窗口中得以完成。 (3)該應(yīng)用程序嵌入于Microsoft Office某一應(yīng)用程序中。這一應(yīng)用程序可以在《化學(xué)工程考試系統(tǒng)》中擔(dān)當(dāng)被調(diào)用的模塊,為了不影響Microsoft Office正常操作,也可作為Microsoft Office某一應(yīng)用程序的一部分(該應(yīng)用程序嵌入在WORD中)嵌入其中,使Microsoft Office的應(yīng)用功能得到擴(kuò)展。 3 具體方案的實(shí)現(xiàn) 可在ACCESS應(yīng)用程序中建立試題庫。一表一題型,一題一記錄,每一記錄中含題目、答案、難度系數(shù)等項(xiàng)目(難度系數(shù)便于試卷分析用)。以下主要就嵌入式應(yīng)用程序的某些關(guān)鍵之處作重點(diǎn)闡述,由于篇幅所限,許多細(xì)節(jié)此處不多贅述。 3.1 嵌入方案的實(shí)現(xiàn) 在Office的各應(yīng)用程序中,用VBA可以創(chuàng)建許許多多的自定義小程序。這些小程序往往通過創(chuàng)建一個(gè)工具欄中工具按鈕或創(chuàng)建菜單項(xiàng)來運(yùn)行,即采用嵌入的方式使Office各應(yīng)用程序的應(yīng)用功能得到擴(kuò)展。比如在Office應(yīng)用程序Word中創(chuàng)建一個(gè)工具按鈕,當(dāng)用戶單擊所創(chuàng)建的工具按鈕時(shí),Click()事件觸發(fā),并執(zhí)行特定的代碼以響應(yīng)事件。因此,創(chuàng)建工具按鈕來運(yùn)行VBA程序不失為一種擴(kuò)展Office各應(yīng)用程序應(yīng)用功能的嵌入式方法。 3.1.1 創(chuàng)建一個(gè)工具按鈕 打開Visual Basic編輯器,添加一個(gè)新的類模塊,其名稱默認(rèn)為類1。當(dāng)新建一個(gè)Word文檔時(shí),在常用工具欄中自動(dòng)添加一個(gè)名為“自動(dòng)出卷”的工具按鈕(按鈕圖標(biāo) ),其VBA代碼如下: Dim cmd As New 類1 Private Sub Document_New() With Application.CommandBars("standard").Controls.Add(Before:=1) .Caption = "自動(dòng)出卷" '將添加的工具按鈕命名為“自動(dòng)出卷” .FaceId =2985 '設(shè)置工具按鈕的圖標(biāo) End With Set cmd.cmdcj = Application.CommandBars("standard").Controls("自動(dòng)出卷") End Sub With…End With塊中為添加一個(gè)工具按鈕的最基本代碼,工具按鈕命名為“自動(dòng)出卷”,并設(shè)置工具按鈕圖標(biāo)。代碼中包含的Set語句為工具按鈕聲明,當(dāng)你單擊此工具按鈕時(shí),將執(zhí)行cmdcj_Click()過程中的代碼。 3.1.2 工具按鈕的Click()事件 單擊添加的工具按鈕時(shí),執(zhí)行cmdcj_Click()過程中的代碼完成以下工作:1)關(guān)閉當(dāng)前文檔;2)打開如圖1所示名為“test.doc”的空白試卷文檔;3)顯示嵌入式應(yīng)用程序的界面,即名為“pxpform”的窗體(圖2)。 cmdcj_Click()過程中的代碼如下: Public WithEvents cmdcj As Office.CommandBarButton Private Sub cmdcj_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean) Documents.Close '關(guān)閉當(dāng)前文檔 Documents.Open FileName:="C:\temp\test.doc" '打開路徑及文件名為“C:\temp\test.doc”的文檔 pxpform.Show '顯示名為“pxpform”的窗體 End Sub 圖1 空白試卷文檔“test.doc” 圖2 “自動(dòng)出卷”嵌入式應(yīng)用程序界面 3.2 連接數(shù)據(jù)庫及試題的提取與編排 在WORD中創(chuàng)建“自動(dòng)出卷”應(yīng)用程序,其關(guān)鍵所在是跨Office各應(yīng)用程序建立集成的解決方案,即從WORD中創(chuàng)建與ACCESS數(shù)據(jù)庫連接并提取試題進(jìn)行編排。一個(gè)ACCESS數(shù)據(jù)庫包含了所需要的各類試題,并確定放在某個(gè)目錄之下。如本例ACCESS數(shù)據(jù)庫庫名為“pxp.mdb”,放在目錄“C:\temp”之下。ACCESS數(shù)據(jù)庫中根據(jù)試題分類建立相應(yīng)的表,如填空題對應(yīng)的表為“pxptkt”。 3.2.1 連接ACCESS數(shù)據(jù)庫 ADO為Microsoft的ActiveX數(shù)據(jù)對象,其連接數(shù)據(jù)庫的功能是基于Microsoft的OLE DB技術(shù)。引用ActiveX數(shù)據(jù)對象的一般步驟為:1)切換到WORD中的Visual Basic編輯器;2)執(zhí)行“工具/引用”菜單命令;3)在打開的對話框中選擇要引用的ActiveX數(shù)據(jù)對象(WORD從Access數(shù)據(jù)庫中檢索與調(diào)用數(shù)據(jù)可在對話框列表中選擇Microsoft ActiveX Data Objects 2.0 library項(xiàng));4)創(chuàng)建VBA宏代碼連接數(shù)據(jù)對象及操作數(shù)據(jù)對象。由ADO的Connection 對象處理到與數(shù)據(jù)庫的連接,建立連接使用Open方法,采用以下語法: Connection.Open Connectionstring,UserID,Password,Options Open方法中參數(shù)Connectionstring為包含連接信息的字符串,UserID為連接時(shí)使用的用戶名。Password為連接時(shí)使用的口令,Options為是否希望Open方法等待連接的建立還是立即返回。 以下VBA代碼實(shí)現(xiàn)ADO連接ACCESS數(shù)據(jù)庫,即在WORD文檔中連接ACCESS數(shù)據(jù)庫形式的試題庫中調(diào)用試題: Public setpxp As New ADODB.Recordset Public cnnpxp As New ADODB.Connection Dim constring As String constring = "provider=microsoft.jet.oledb.4.0;" & "data source=" & "C:\temp\pxp.mdb" cnnpxp.Open constring
|
|