999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ExcelVBA的自動生成試卷系統設計

2010-04-29 00:00:00王凡帆
電腦知識與技術 2010年11期

摘要:通過對ExcelVBA的研究,采用VBA的二次開發技術,設計了一個自動組卷系統,由題庫將試卷自動生成Word文檔,較好地解決了手工出卷的繁瑣和不科學性,提高了教師工作效率。

關鍵詞:題庫;VBA;自動生成試卷

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)11-2650-03

The Design of System about Automatic Generation of Test Paper Based on Excel VBA

WANG Fan-fan

(Hainan College of Economics and Business, Haikou 571127, China)

Abstract: Through researching the Excel VBA, using the re-development technology of VBA, has designed an automatic group for volume system, produces automatically by the question bank the examination paper the Word documents, and solved well that has made examination by hand volume tedious and unscientific, improved the teacher's work efficiency.

Key words: question bank; VBA; automatic group for volume

目前,許多老師在出卷時還是采用手工出卷方式,臨時東拼西湊試題,有時甚至將往年的試卷稍加修改而成,這樣難免造成可用試題數量極少、試題使用的重復性、對全部知識點的覆蓋面差等現象。尤其對于大多數學校都要求教考分離,如果還采用這種手工出卷的方式,費時費力不說,更重要的是難以保證其科學性和公正性。對此,本文通過Excel創建試題庫,并利用VBA工程來實現自動生成一份完整的Word 文檔試卷。

1 設計思路

1.1 VBA簡介

VBA是內嵌在Office應用套裝程序中的編程語言,VBA程序的運行需要依托于它的主應用程序(Word、Excel、Access等),VBA是Windows應用軟件的通用控制語言,利用VBA可以方便地調用和定制主應用程序的對象,通過VBA的開發,可以方便地實現辦公自動化。下面通過ExcelVBA實現考試試卷的自動生成。

1.2 功能設計

本系統要求在Excel工作簿中建設試題庫,本例中根據組卷的題型要求共創建了“選擇題”、“判斷題”、“填空題”、“簡答題”、“問答題”工作表,并創建一個“試卷生成表”工作表設置試卷模板,模板中將生成試卷的各題型的小題數目設置好,然后再通過VBA工程實現試卷隨機生成并輸出到Word 文檔。

2 系統實現

2.1 題庫設計

建立一個Excel工作簿文件,分別按題型將題目輸入相對應的工作表中,另建立一個試卷生成表的工作表,如圖1所示。

“試卷生成表”工作表中A列存放各類題題庫中的原始題號數據,B列存放各類題題型數據,C列中是具體各題所對應的題目內容數據,D列是各類題生成試卷后的小題號。在A1單元格中設置一個按鈕控制“生成試卷”,如圖2所示。

在表頭的C1單元格中輸入“=\"2009-2010年第一學期《計算機應用基礎》考試試卷\"D1”來設置生成試卷的類別“A卷”,試卷類別具體在D1單元格中列表存放,生成試卷前選擇所需類別就可;在B列中輸入公式“=IF($A2=\"\",\"\",\"一、填空題\")”來獲取與A列中相應的題號所對應的題型;在“試卷生成表”的C列存放題目內容,利用IF($A2=\"\",\"\",VLOOKUP($A2,填空題!$A:$C,2,))獲取相關聯數據,其中“VLOOKUP($A2,填空題!$A:$C,2,)”表示獲取與A2單元格中題號“21”一致的填空題表中的A~C列中第二列的數據,即通過此函數可獲取到相關的該題號所關聯的題目內容存放到C列,設置好試卷生成模板,達到了組卷的目的。

2.2 由題庫隨機生成試題

在VBA工程中對應每個題型模塊設置相應的宏代碼實現,下面是填空題的試題生成模塊代碼:

Sub 填空題()

Dim mr As Range

Dim tk As Integer

tk = Sheets(\"填空題\").[A65536].End(xlUp).Row – 1 ' 計算出所有填空題的總數

For Each mr In Range(\"a2:a11\")

Do

mr = Int(Rnd() * tk + 1)

Loop Until Application.CountIf(Range(\"a2:a11\"), mr) = 1

Next mr

選擇題 ' 調用執行選擇題模塊代碼

End Sub

其中 “Sheets(\"填空題\").[A65536].End(xlUp).Row – 1”用于計算題庫中填空題的總數目,“Range(\"a2:a11\") ”表示“生成試卷表”中填空題所存放的區域,“mr = Int(Rnd() * tk + 1)”實現在題目總數范圍內隨機獲取題號。語句“選擇題”表示在此調用執行選擇題模塊代來生成選擇題目內容,其它題型模塊代碼也是類擬的實現。執行完這些模塊代碼后就可在“試卷生成表”中生成一份試卷。

2.3 生成標準Word文檔試卷

老師的試卷最終是以Word文檔輸出打印的,“生成試卷”按鈕要完成的功能是隨機從相應題庫中抽取一定數量的題目到試卷生成表中,同時按設置格式輸出到Word文檔,生成一份可打印的Word文檔試卷。“生成試卷”按鈕單擊事件代碼實現如下:

Private Sub CommandButton1_Click()

Dim rng As Range

Dim rDATA As Range

Dim wd As Word.Application

Dim ret As Integer

ret = MsgBox(\"程序即將開始自動生成試卷!\" vbCrLf vbCrLf _

\"現在就開始嗎?\", vbYesNo + vbInformation, \"生成試卷\")

Call 填空題' 調用試卷生成模塊代碼生成試卷

If ret = vbNo Then Exit Sub

Set rDATA = Range(Range(\"Start\").Offset(1, 0), Range(\"Start\").End(xlDown))

Set wd = CreateObject(\"word.application\")' 創建 Word 實例

wd.Visible = True' 使 Word 可見

AppActivate wd.Name' 激活 Word 窗口

With wd

.Documents.Add

With .Selection

.ParagraphFormat.SpaceBeforeAuto = True

.Font.Size = 18

.Font.Bold = True

.Text = [C1]

.EndKey

.TypeParagraph

End With

With .Selection

.ParagraphFormat.SpaceBeforeAuto = True

.Font.Size = 14

.Font.Bold = False

.Text = [B1]

.EndKey

.TypeParagraph

End With

' 導入 Excel 文本

For Each rng In rDATA

With .Selection

' 插入分類

If rng.Offset(0, 1) <> rng.Offset(-1, 1) Then

.ParagraphFormat.SpaceBeforeAuto = True' 段前自動行距

.Text = rng.Offset(0, 1)

.Font.Size = 14

.Font.Bold = True 'wdToggle' 切換文本為加粗

' 設置底紋灰度級 25

.ParagraphFormat.Shading.BackgroundPatternColor = wdColorGray25

.EndKey ' 移到行末

.TypeParagraph ' 換行

.Font.Bold = wdToggle

' 取消底紋灰度級

.ParagraphFormat.Shading.BackgroundPatternColor = wdColorAutomatic

End If

' 插入問題

.ParagraphFormat.SpaceBeforeAuto = True

.Font.Size = 10.5

.Font.Bold = False ' wdToggle

.Text = rng.Offset(0, 3) \". \" rng.Offset(0, 2)

.EndKey

.TypeParagraph

End With

Next

' 設置頁腳

.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter

.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

.NormalTemplate.AutoTextEntries(\"第X頁 共Y 頁\").Insert Where:=.Selection.Range

.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

End With

Set wd = Nothing

AppActivate Application.Name ' 激活 Excel 窗口

MsgBox \"試卷已生成, 請另行保存 Word 文檔.\"

End Sub

執行該代碼后可重新隨機在“試卷生成表”中生成試卷并按設置格式輸出到Word文檔,最終保存Word 文檔就是一份完整的試卷了,試卷界面如圖3所示。

本系統可用于期末考試的試卷生成,也能用于平時的單元測驗等,在題庫工作表中可以加入答案內容列,能類似地由本系統生成試卷答案文檔。如果要隱藏題庫工作表內容,可以通過“Sheet2.Visible = xlSheetVeryHidden”語句來實現,用這種方法隱藏的工作表無法通過“取消隱藏”來顯示工作表,能很好地保護數據。

3 結束語

本系統通過一個簡單的VBA工程實例就可完成了試題庫建設和試卷的自動生成,教師能對題庫進行編輯,修改,只需定制好每份試卷各題型的題目數,就可以自動生成試卷并輸出到Word文檔,基于ExcelVBA的試卷生成系統不需要另外選擇一種數據庫作為后臺數據庫,操作簡單,開發周期較短,有一定的實用性。

參考文獻:

[1] WZ坐標工作室.Excel函數/圖表應用技巧與綜合案例操作[M].北京:中國鐵道出版社,2008.

[2] Excel Home.Excel高效辦公公司管理[M].北京:人民郵電出版社,2008.

[3] 張智豐,張亞榮.基于ASP和VBA技術自動生成復雜word格式試卷[J].內蒙古民族大學學報:自然科學版,2009(11).

主站蜘蛛池模板: 亚洲综合色婷婷中文字幕| 国禁国产you女视频网站| AV无码一区二区三区四区| 中国精品自拍| 91毛片网| 91免费片| 国产尤物在线播放| 亚洲综合色吧| 无码精品福利一区二区三区| 在线五月婷婷| 在线综合亚洲欧美网站| 欧美日韩国产系列在线观看| 女人一级毛片| 尤物成AV人片在线观看| 午夜无码一区二区三区| 一级黄色网站在线免费看| 国产亚洲高清在线精品99| 精品一區二區久久久久久久網站| 视频二区亚洲精品| 国产主播喷水| 国产成人免费| 国产日韩欧美中文| 欧美精品另类| 国产精欧美一区二区三区| 综合亚洲色图| 亚洲水蜜桃久久综合网站| 色综合中文综合网| 国产午夜看片| 亚洲黄色视频在线观看一区| 一级毛片高清| 国产丝袜丝视频在线观看| 青青青国产视频| 亚洲欧美日韩另类| 制服丝袜国产精品| 中文成人在线视频| 国产一在线观看| 国产91熟女高潮一区二区| 福利一区三区| 九九九久久国产精品| 国产一级做美女做受视频| 国产亚洲欧美在线视频| 真实国产乱子伦高清| 亚洲无码熟妇人妻AV在线| 99热线精品大全在线观看| 亚洲第一黄片大全| 亚洲一区国色天香| 午夜激情福利视频| 亚洲人成成无码网WWW| 97se亚洲综合| 国产精品免费福利久久播放 | 欧亚日韩Av| 九九热视频精品在线| 欧美日韩另类国产| 99re在线免费视频| 国产情侣一区二区三区| 亚洲大尺码专区影院| 国产屁屁影院| 国产丝袜精品| 被公侵犯人妻少妇一区二区三区 | 亚洲欧美人成人让影院| 亚洲伊人天堂| 日韩123欧美字幕| 亚洲成人77777| 一级爆乳无码av| 亚洲精品成人7777在线观看| 亚洲性一区| 国产欧美另类| 国产精品私拍在线爆乳| 欧美色丁香| 91亚洲影院| 亚洲嫩模喷白浆| 成人福利视频网| 久久精品亚洲专区| 成人久久18免费网站| 91久久偷偷做嫩草影院免费看| 日韩美女福利视频| 免费AV在线播放观看18禁强制| 国产精品成人免费视频99| 精品国产一区91在线| 黄色网在线| 国国产a国产片免费麻豆| 亚洲精品777|