Word中自动出卷
1 总体设计方案 (1)建立试题库及设计含固定卷首的空白试卷。WORD文档要从ACCESS数据库形式的试题库中调用试题,是Microsoft Office应用程序之间的信息交换。根据需要可设计一个便于执行各种操作,包括具有增、删及调用功能的ACCESS数据库(本例库名为pxp.mdb),库中含填空题、选择题、判断题、问答题及综合题等各类题型的表(如填空题对应于表pxptkt)。试卷往往可以有固定的卷首格式,故预先设计含固定卷首(图1)的一空白试卷供程序调用。 (2)创建应用程序界面。自动出卷所涉及的试题提取、编写题头、试卷排版、试卷分析、保存试卷及打印输出等任务都在同一界面窗口中得以完成。 (3)该应用程序嵌入于Microsoft Office某一应用程序中。这一应用程序可以在《化学工程考试系统》中担当被调用的模块,为了不影响Microsoft Office正常操作,也可作为Microsoft Office某一应用程序的一部分(该应用程序嵌入在WORD中)嵌入其中,使Microsoft Office的应用功能得到扩展。 3 具体方案的实现 可在ACCESS应用程序中建立试题库。一表一题型,一题一记录,每一记录中含题目、答案、难度系数等项目(难度系数便于试卷分析用)。以下主要就嵌入式应用程序的某些关键之处作重点阐述,由于篇幅所限,许多细节此处不多赘述。 3.1 嵌入方案的实现 在Office的各应用程序中,用VBA可以创建许许多多的自定义小程序。这些小程序往往通过创建一个工具栏中工具按钮或创建菜单项来运行,即采用嵌入的方式使Office各应用程序的应用功能得到扩展。比如在Office应用程序Word中创建一个工具按钮,当用户单击所创建的工具按钮时,Click()事件触发,并执行特定的代码以响应事件。因此,创建工具按钮来运行VBA程序不失为一种扩展Office各应用程序应用功能的嵌入式方法。 3.1.1 创建一个工具按钮 打开Visual Basic编辑器,添加一个新的类模块,其名称默认为类1。当新建一个Word文档时,在常用工具栏中自动添加一个名为“自动出卷”的工具按钮(按钮图标 ),其VBA代码如下: Dim cmd As New 类1 Private Sub Document_New() With Application.CommandBars("standard").Controls.Add(Before:=1) .Caption = "自动出卷" '将添加的工具按钮命名为“自动出卷” .FaceId =2985 '设置工具按钮的图标 End With Set cmd.cmdcj = Application.CommandBars("standard").Controls("自动出卷") End Sub With…End With块中为添加一个工具按钮的最基本代码,工具按钮命名为“自动出卷”,并设置工具按钮图标。代码中包含的Set语句为工具按钮声明,当你单击此工具按钮时,将执行cmdcj_Click()过程中的代码。 3.1.2 工具按钮的Click()事件 单击添加的工具按钮时,执行cmdcj_Click()过程中的代码完成以下工作:1)关闭当前文档;2)打开如图1所示名为“test.doc”的空白试卷文档;3)显示嵌入式应用程序的界面,即名为“pxpform”的窗体(图2)。 cmdcj_Click()过程中的代码如下: Public WithEvents cmdcj As Office.CommandBarButton Private Sub cmdcj_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean) Documents.Close '关闭当前文档 Documents.Open FileName:="C:\temp\test.doc" '打开路径及文件名为“C:\temp\test.doc”的文档 pxpform.Show '显示名为“pxpform”的窗体 End Sub 图1 空白试卷文档“test.doc” 图2 “自动出卷”嵌入式应用程序界面 3.2 连接数据库及试题的提取与编排 在WORD中创建“自动出卷”应用程序,其关键所在是跨Office各应用程序建立集成的解决方案,即从WORD中创建与ACCESS数据库连接并提取试题进行编排。一个ACCESS数据库包含了所需要的各类试题,并确定放在某个目录之下。如本例ACCESS数据库库名为“pxp.mdb”,放在目录“C:\temp”之下。ACCESS数据库中根据试题分类建立相应的表,如填空题对应的表为“pxptkt”。 3.2.1 连接ACCESS数据库 ADO为Microsoft的ActiveX数据对象,其连接数据库的功能是基于Microsoft的OLE DB技术。引用ActiveX数据对象的一般步骤为:1)切换到WORD中的Visual Basic编辑器;2)执行“工具/引用”菜单命令;3)在打开的对话框中选择要引用的ActiveX数据对象(WORD从Access数据库中检索与调用数据可在对话框列表中选择Microsoft ActiveX Data Objects 2.0 library项);4)创建VBA宏代码连接数据对象及操作数据对象。由ADO的Connection 对象处理到与数据库的连接,建立连接使用Open方法,采用以下语法: Connection.Open Connectionstring,UserID,Password,Options Open方法中参数Connectionstring为包含连接信息的字符串,UserID为连接时使用的用户名。Password为连接时使用的口令,Options为是否希望Open方法等待连接的建立还是立即返回。 以下VBA代码实现ADO连接ACCESS数据库,即在WORD文档中连接ACCESS数据库形式的试题库中调用试题: 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
|
|