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

基于VBA的PPT問答式復習系統的設計與實現

2020-07-09 21:02:06王宏杰許麗娟
視界觀·上半月 2020年1期

王宏杰 許麗娟

摘? ? 要:傳統的問答式課前復習是在PPT里編輯和排版題目,教師即要思考題目也要兼顧題目在PPT中的版式布局。數據與視圖混為一體,導致教師核心精力分散,也使得題目維護的工作量較大。利用VBA技術能有效解決這一問題,VBA自動從Excel中讀取題目展示到PPT中,實現題目數據與展示視圖的分離,教師只需專注在Excel中維護題庫,排版展示工作交給VBA實施。

關鍵詞:VBA;PPT;Excel;question bank

引言

作者曾對獨立院校的學情做過調查分析,并提出:在學生主動學習能力差的情況下,切實開展課前復習能有效幫助學生消化吸收上節課的知識。同時,作者通過實踐發現,問答式課前復習是一種行之有效的方法:根據上一節課的知識點整理若干道題目,以問答的方式在課前展開復習。

但問答式課前復習對教師提出了更高的要求:根據章節整理出題目,并且將之排版形成PPT。后續對題目進行增刪改等維護時,就得維護相應排版,也就是說,題目與展示混合在一起,使得維護的工作量增大了。

對此,本文提出基于VBA的PPT問答式復習系統,以 Microsoft Excel作為編輯、存儲題目的后臺“數據庫”,以Microsoft PowerPoint作為前端視圖,以VBA技術作為中間控制器自動讀取Excel中的題目展示到PPT中,實現前后端分離。教師只需在Excel中維護題目,排版展示工作交給系統自動完成,從而減少教師工作量。同時,系統以PPT為宿主,可以集成在教師原PPT課件中,相當于為原課件擴展了復習功能。

一、技術基礎

(一)VBA

VBA(Visual Basic For Application)是美國微軟公司在Visual Basic基礎上開發出來,應用于其桌面應用程序的一種自動化任務編程語言。1993年,VBA開始出現在Microsoft Excel和Microsoft Project中入[1],以滿足用戶在特定領域對Office基本功能擴展的需求。目前,VBA已集成于Microsoft Office的大多數產品中,包括Word、Excel、PowerPoint、Outlook等。

本系統使用的VBA是基于Microsoft PowerPoint 2016的Microsoft visual Basic for Application 7.1。

(二) ActiveX控件

ActiveX是微軟公司對一系列策略性面向對象程序技術和工具的稱呼,其中主要的技術是組件對象模型(COM)。ActiveX控件,是可以在應用程序中重復使用的程序對象,它的主要技術是ActiveX。VBA編輯器提供的ActiveX控件比較豐富,本系統使用到的有:命令按鈕控件、標簽控件、文本框控件、List Box控件等。

二、系統設計

(一)功能設計

系統以 Microsoft Excel作為編輯、存儲題目的后臺“數據庫”,以Microsoft PowerPoint作為前端視圖,以PowerPoint自帶的VBA作為核心技術,實現前后端分離,如圖1所示。

通過PPT上的命令按鈕,用戶觸發系統,系統啟動后讀取Excel中的章節、題目信息,自動在當前PPT中新增幻燈片,并按照一定的布局版式展示每道題目。同時,每個題目幻燈片上有“查看答案”按鈕,點擊時動態顯示答案。題目和答案的內容支持文字和圖片。

(二)前端視圖設計

PPT(教師原課件)作為題庫的前端視圖,用于展示題目。題目在Excel中有多道,系統對每道題在原PPT最前面新增一個幻燈片用于展示。Excel中每道題目由多行組成,對于每一行,幻燈片采用一個新的文本框存放其內容。題目題型(填空、判斷、單選、多選)展示在答案區域的文本框中,當用戶點擊“查看按鈕”時,答案區域的文本框內容由題型變為答案[2]。題目在幻燈片中的版式布局如圖2所示。

(三)后端數據庫設計

Excel作為 “數據庫”,用于編輯、存儲題目,形成題庫。題目設計規則如下:

(1)Excel文件。題庫以課程的章為單位,一章一個Excel文件,文件以“xxx復習題”格式命名,和PPT放在同一目錄下。

(2)Excel工作表。一個Excel文件里面可以有多個工作表(sheet)。一個工作表為一次復習題,可以有多道題目,工作表表名要符合實際且通俗易懂,如“2.1常量與變量”或“第2章第1次復習”等。

(3)題目設計規范。為了方便VBA程序快速、準確的從表中讀取題目到PPT中,設定以下規范:

①工作表的第1列為標識列。只能是以下標識:“{”是題目開始標識,標注在題目開始處;“}”是題目結束標識,標注在題目結束的下一行;大寫字母A-Z是選項標識,標注在選擇題處;“img”是圖片標識,標注在圖片頂部位置。如圖3、圖4所示。

②工作表的第2列為題目內容。題目內容是圖片時,圖片寬度不要超過第2列的列寬。當然,可以通過調整第2列的列寬,使得內容適當。如圖3、圖4所示。

③工作表的第3列為答案內容。其中,“FALSE”、“TRUE”,表示判斷題,代表錯、對;單個大寫字母A-Z,表示單選題,代表單選答案;多個大寫字母A-Z,表示多選題,代表多選答案;“img”,表示填空題且答案是圖片,圖片放在“img”標識下,不要超過題目范圍。其余答案內容,視為填空題。如圖3、圖4所示。

三、系統實施

(一)題庫初始化

按照上述規則新建Excel文件,將題目按小節或其他方式錄入在工作表中。Excel文件的存放路徑與PPT保持一致。

(二)修改幻燈片空白版式

為了統一采用圖2的幻燈片版式布局,本系統通過修改幻燈片母版的空白版式實現。具體方法為:在PPT中通過“視圖”打開“幻燈片母版”,選中“空白版式”,然后通過“開發工具”在空白版式上新增一個命令按鈕(ActiveX控件),通過屬性修改該控件標題為“查看答案”。其余布局通過VBA動態實現。

(三)引用Excel對象庫

以PPT為宿主的VBA不能直接使用Excel相關對象和函數,需要先加載Excel對象庫,具體方法為:在PPT中打開“開發工具”,點擊“Visual Basic”進入VBA編輯器。通過“工具”引用“Microsoft Excel 16.0 Object Library”[3]。

(四)啟動及交互確認

(1)系統觸發。在教學PPT的第一頁新增一個命令按鈕控件“課前復習”,用于觸發系統。系統啟動后尋找并打開當前PPT路徑下的“xxx復習題”Excel文件,讀取每個工作表里第一列的標識信息,記錄每道題在表格中的起止位置即 “{”、“}”標識所在的行。為了方便,本系統自定義了一個新數據類型,用于存儲工作表名(章節名)以及每道題目的位置,具體代碼如下:

'自定義類型,用于存放章節名以及題目在表格中的起止位置

Public Type TYPE_SAQP? 'SectionAndQuestionPositon

section As String? ?'章節名

questionpos() As Integer? ? '所有題目的起止位置

End Type

全局變量,保存每個章節工作表的名稱以及里面每道題的起止位置

Public PUB_arr_SAQP() As TYPE_SAQP

(2)章節選擇窗口。從前面得到的章節名和題目起止位置數組中提取章節名,計算出題目數量,形成二維數組,加載到章節選擇窗口的ListBox控件中(如圖5,該控件設置為兩列,需要二維數組才能初始化),以便用戶選擇需要生成復習題的章節。

(五)題目在幻燈片中展示

當題目內容為文本時,可以直接通過Excel的cells函數取到單元格內容,然后賦值給幻燈片的文本框。但題目內容為圖片時,就不能這樣直接賦值。所以,需要根據題目是否有圖片分別處理:

(1)題目為純文本時。此時表格第1列沒有圖片標識,系統為每道題目在原PPT最前面新增一張空白版式的幻燈片作展示。從題目的開始行到結束行,每行對應在幻燈片題目區域新建一個文本框,通過cells函數讀取該行第2列的內容賦值給文本框。部分代碼如下:

'幻燈片母版中空版式對應的索引是7

Set mylayout = ActivePresentation.SlideMaster.CustomLayouts(7)

'每道題目新增一個幻燈片來展示

For i = 0 To questionnum - 1

'第i+1道題新增為第i+1個幻燈片,名字為“復習x”

ActivePresentation.Slides.AddSlide(i + 1, mylayout).Name = "復習" & i

'工作表里的所有題目的位置信息依次保存在數組中

startrow = arr_QuestionPostion(i * 2)? ?'題目開始行

endrow = arr_QuestionPostion(i * 2 + 1) '題目結束行

...

'對于每道題,xls中的每一行對應在幻燈片中新增一個文本框

mytop = 80 '第一個文本框的初始位置top值

For m = startrow To endrow - 1

imagestr = xlsSheet.Cells(m, 1) '讀取第1列數據,判斷是否有圖片

'當本行沒有圖片標識時

If (imagestr <> IMAGEFLAG And xlsSheet.Cells(m, 2) <> "") Then

Set myshap = ActivePresentation.Slides(i + 1). _

Shapes.AddTextbox(1, 40, mytop, 450, 30) '新增文本框

myshap.Name = "questioncontent-" & (m - startrow) '文本框命名

If (m = startrow) Then? '題目第一行需要加入序號

myshap.TextFrame2.TextRange.Text = (i + 1) & _

"、" & xlsSheet.Cells(m, 2)

Else

If typestr = "判斷題" Or typestr = "填空題" Then

myshap.TextFrame2.TextRange.Text = xlsSheet.Cells(m, 2)

Else

'選題時,需要加xls中第一列的選項信息,如A、xxx

myshap.TextFrame2.TextRange.Text = _

xlsSheet.Cells(m, 1)& "、" & xlsSheet.Cells(m, 2)

mytop = mytop + myshap.Height '下一個文本框的位置

(2)題目包含圖片時。此時表格第1列有圖片標識,由于圖片默認是浮在單元格之上的,所以無法直接獲取圖片。本系統采用的方法是:遍歷當前工作表中的所有形狀(Shapes),如果某形狀的左上角坐標在某題目第2列范圍內,則認為該形狀是本題目的圖片;然后在表格中拷貝該形狀,粘貼到幻燈片中;最后在幻燈片里調整該圖片的位置,使其位于題目區域。部分代碼如下:

If (imagestr = IMAGEFLAG) Then '當本行有圖片標識時

top1 = xlsSheet.Cells(startrow, 2).Top

top2 = xlsSheet.Cells(endrow, 2).Top

left1 = xlsSheet.Cells(startrow, 2).Left

left2 = left1 + xlsSheet.Cells(startrow, 2).Width

Set xlspicshps = xlsSheet.Shapes '當前表格里的所有形狀

For n = 1 To xlspicshps.Count

'遍歷xls中所有形狀,判斷其左上角坐標是否在范圍內

If (xlspicshps(n).Top > top1 And xlspicshps(n).Top < top2 _

And xlspicshps(n).Left > left1 And xlspicshps(n).Left < left2) Then

xlsSheet.Shapes(xlspicname).Copy '對xls中的形狀進行拷貝

'粘貼前幻燈片里面形狀的數量

shpnum = ActivePresentation.Slides(i + 1).Shapes.Count

'向幻燈片中粘貼形狀

ActivePresentation.Slides(i + 1).Shapes.Paste

'粘貼進來的形狀在幻燈片里的索引值為shpnum+1 Set myshap = ActivePresentation.Slides(i + 1).Shapes(shpnum + 1)

'調整形狀的位置到題目區域

myshap.Left = 40

myshap.Top = mytop

mytop = mytop + myshap.Height + 5? ?'圖片間隔5單位

(3)答案為純文本時。根據表格第3列的內容,系統依照規則判斷當前題目是什么類型(填空、判斷、單選、多選),并將題型寫在答案文本框中。點擊“查看答案”按鈕時,更新答案文本框內容為題目答案。部分代碼如下:

'答案區域文本框初始化

Set myshap = ActivePresentation.Slides(i + 1). _

Shapes.AddTextbox(1, 550, 140, 130, 30) '在答案區域新增文本框

myshap.Name = "typeanswer-" & i '答案文本框命名

myshap.Fill.BackColor.RGB = VBA.RGB(230, 230, 230) '答案文本框設置為灰色

myshap.TextFrame2.TextRange.Text = typestr '題型

...

' 點擊“查看答案時”按鈕時,答案文本框顯示答案

'當前放映的幻燈片名字,如復習0

slidename = SlideShowWindows(1).View.Slide.Name

tempstr = Replace(slidename, "復習", "")

myindex = Int(tempstr)

'全局二維數組PUB_arr2_TypeAndAnswer保存了題型和答案

answerstr = PUB_arr2_TypeAndAnswer(myindex, 1) '答案

answershpname = "typeanswer-" & myindex '答案文本框對應的名字

...

'更新答案文本框內容為題目答案

ActivePresentation.Slides(slidename).Shapes(answershpname). _

TextFrame2.TextRange.Text = answerstr

...

(4)答案為圖片時。表格第3列為“img”時,表示答案為圖片,采用之前的圖片處理方法:從工作表中拷貝答案圖片,粘貼到幻燈片中,調整圖片位置到答案區域,然后將圖片設置為隱藏,點擊“查看答案”時,使圖片顯示。效果如圖6所示。

四、結論

本系統以Excel為題目“數據庫”,以PPT為視圖展示,利用VBA技術實現了數據與視圖的分離。使得教師只需在Excel中專注題目本身的設計,無需關心題目在PPT中的排版展示,能有效提升教師的工作效率,從而進一步推動課前復習的實施,提升教學效果。

參考文獻:

[1]朱建國. PPT新視角-VBA應用技術[M].北京:電子工業出版社,2013

[2]李永強.PowerPoint VBA技術在多媒體教學練習課件中的運用[J].江漢石油職工大學學報,2011,24(05):58-60+66.

[3]陳永強,李茜,陳海川.例學VBA—Excel/Access/PowerPoint中的VBA高效引用[M].北京:中國鐵道出版社,2010

基金項目:廣東財經大學華商學院計算機科學與技術一流專業建設項目(HS2019CXQX06)

作者簡介:王宏杰(1982-),男,湖北襄陽人,碩士研究生,助教,研究方向為人工智能、深度學習;

許麗娟(1979-),女,青海樂都縣人,碩士研究生,副教授,研究方向為圖像識別 、數據挖掘。

通信作者:王宏杰

主站蜘蛛池模板: 国产精品无码AV中文| 日韩国产一区二区三区无码| 国产成人久久777777| 亚洲av日韩av制服丝袜| 高清无码手机在线观看| 亚洲免费播放| 日本高清成本人视频一区| 91系列在线观看| 亚洲天堂在线免费| 视频在线观看一区二区| 婷婷午夜天| 亚洲欧美一区二区三区图片| 久久精品亚洲中文字幕乱码| 国产精品免费入口视频| 欧美成人午夜视频| 日本黄色a视频| 国产成人精品午夜视频'| 日韩在线网址| 麻豆精品在线视频| 国产欧美日韩精品第二区| 久久情精品国产品免费| 丁香婷婷激情综合激情| 在线观看的黄网| 狠狠色综合网| 国产一区二区三区免费观看| 成人日韩视频| 热久久国产| 欧美精品在线视频观看| 999精品色在线观看| 国产精品久久久久鬼色| 国产精品欧美在线观看| 国产女人在线观看| 欧美午夜在线播放| 久久影院一区二区h| 国产9191精品免费观看| 欧美日韩精品一区二区视频| 成人午夜天| 精品国产免费观看| 国产日本欧美在线观看| 久久夜色撩人精品国产| 国产激爽爽爽大片在线观看| 中文国产成人久久精品小说| 男人的天堂久久精品激情| 亚洲av无码片一区二区三区| 国产91熟女高潮一区二区| 在线看片免费人成视久网下载| 国产在线98福利播放视频免费| 91九色国产porny| 欧美日韩亚洲综合在线观看| 国产嫖妓91东北老熟女久久一| 欧美日韩激情| 亚洲欧美一区二区三区蜜芽| 国产亚洲视频中文字幕视频| 久久久久亚洲精品成人网 | 亚洲日产2021三区在线| V一区无码内射国产| 国产乱子伦视频在线播放 | 欧美一级专区免费大片| 九九精品在线观看| 白浆视频在线观看| 成人国产精品2021| 久久动漫精品| 一级片一区| 视频一区亚洲| 久久毛片免费基地| 亚洲黄色片免费看| 中文字幕有乳无码| 免费可以看的无遮挡av无码| 青青青国产精品国产精品美女| 狠狠五月天中文字幕| 国产高清在线精品一区二区三区| 欧美激情综合一区二区| 国产真实乱子伦精品视手机观看 | 亚洲浓毛av| 国产尤物在线播放| 伊人久热这里只有精品视频99| 欧美不卡在线视频| 国产精品尤物铁牛tv | 性视频一区| 99福利视频导航| 99热这里只有精品在线播放| 国模私拍一区二区|