孫俊峰
摘要:通過VBA的學(xué)習(xí),非計(jì)算機(jī)專業(yè)特別是文科專業(yè)背景的同學(xué)不僅能初步掌握Office的高級應(yīng)用技能,還能了解VB語言編程的原理和方法,并通過應(yīng)用軟件平臺實(shí)現(xiàn)對算法、程序、過程、對象等抽象概念的體驗(yàn)和理解。以常見的MS Word設(shè)計(jì)了一堂VBA教學(xué)實(shí)操的入門課程,較好的避免了由于對象的抽象性和操作過程的復(fù)雜導(dǎo)致學(xué)生產(chǎn)生畏難情緒而降低學(xué)習(xí)效率,為進(jìn)一步的VBA學(xué)習(xí)打下了良好的基礎(chǔ)。
關(guān)鍵詞:VBA;MS Word;教學(xué)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)16-3854-04
Abstract: Through VBA learning, non computer professional especially in liberal arts professional background students not only can grasp the advanced application of Office skills, but also can understand the principle and method of VB language programming. The experience and understanding of the abstract concepts such as algorithm, procedure, process, object, etc., can be realized through the application software platform. The MS Word was designed as a VBA teaching practice course, avoiding the complex process of abstraction and object, which would cause students to have fear of difficulty and reduce the efficiency of study, leading a good foundation for further study in VBA.
Key words: VBA; OA; Teaching
1 概述
MS Office(或WPS Office)是電子文秘、辦公自動化等計(jì)算機(jī)應(yīng)用培訓(xùn)課程以及大學(xué)計(jì)算機(jī)公共基礎(chǔ)課程教學(xué)常用軟件,它們不僅能方便快捷的處理字表和圖片對象,而且能通過對編輯過程的錄制和VBA編程來實(shí)現(xiàn)自動化操作[1]。通過VBA的學(xué)習(xí),非計(jì)算機(jī)專業(yè)特別是文科專業(yè)背景的同學(xué)不僅能初步掌握Office的高級應(yīng)用技能,還能了解VB語言編程的原理和方法,通過在日常學(xué)習(xí)和未來工作中常見和熟悉的應(yīng)用軟件平臺實(shí)現(xiàn)對算法、程序、代碼、過程、對象、可視化等抽象概念的體驗(yàn)和理解,進(jìn)而增強(qiáng)學(xué)習(xí)和應(yīng)用計(jì)算機(jī)知識與技能的信心,部分優(yōu)秀的同學(xué)還可以通過進(jìn)一步的學(xué)習(xí),掌握基于Office的實(shí)用MIS(Management Information System)開發(fā)[2],極大的提高工作效率。因此,成功的將VBA學(xué)習(xí)及實(shí)操練習(xí)引入計(jì)算機(jī)相關(guān)課程教學(xué),對于非計(jì)算機(jī)專業(yè)特別是文科專業(yè)背景的同學(xué)來說具有一定的實(shí)踐意義。
2 VBA與宏
VBA的全稱為Visual Basic for Application,其含義是為應(yīng)用程序服務(wù)的Visual Basic,在微軟開發(fā)的應(yīng)用軟件中一般以“寄生”的形式包含在應(yīng)用程序中,與VB不同的是它不能生成獨(dú)立的可執(zhí)行文件,但允許用戶對應(yīng)用程序進(jìn)行二次開發(fā)并擴(kuò)展其功能,同時(shí)由于采用了VB語言的可視化平臺以及事件驅(qū)動方式,使其開發(fā)過程非常直觀而相對容易理解和掌握。在Office的學(xué)習(xí)中,MS Word(或WPS文字)由于其全程可視化、操作過程所見即所得、學(xué)習(xí)和工作中使用頻率高等原因,往往作為Office教學(xué)和培訓(xùn)的入門級課程,學(xué)生也由于經(jīng)常使用而普遍對其中的字符、段落、頁面、視圖、文本框、圖片、域等對象和概念沒有陌生感,有著一定程度的理解和掌握。因此MS Word(或WPS文字)可以作為VBA教學(xué)的入門平臺加以利用,通過錄制用戶操作過程生成宏代碼和基于VB語言的編程來實(shí)現(xiàn)Word的自動化操作[3]。比如需要反復(fù)執(zhí)行的一系列編輯步驟,可以把操作過程錄制為程序,即“宏”,通過運(yùn)行該宏就能重新執(zhí)行其中的操作。除此之外,VBA在Word的高級應(yīng)用還可以實(shí)現(xiàn)文檔管理程序的開發(fā)和格式的轉(zhuǎn)換[4]。
3 基本思路
文字處理平臺作為大學(xué)計(jì)算機(jī)公共課程的重要組成部分,一般都在計(jì)算機(jī)概論和操作系統(tǒng)概論環(huán)節(jié)之后學(xué)習(xí),或安排在電子文秘、企業(yè)管理信息系統(tǒng)、地理信息系統(tǒng)、信息技術(shù)、會計(jì)電算化等專業(yè)基礎(chǔ)課程的實(shí)操環(huán)節(jié)。雖然學(xué)時(shí)有限,但由于學(xué)生在校學(xué)習(xí)期間和社會實(shí)踐中需要大量使用文字處理平臺,導(dǎo)致其對于諸如MS Word、WPS文字等軟件的使用往往相對熟悉甚至得心應(yīng)手。課堂實(shí)踐也證明,熟悉的Office操作界面讓學(xué)生普遍能夠消除畏難情緒并認(rèn)真的投入相關(guān)內(nèi)容的學(xué)習(xí)過程中。
比如Word操作過程中錄制的宏代碼,可以用VBA編輯器加以編寫和修改并在其他過程中調(diào)用,因此宏代碼與普通程序過程沒有本質(zhì)區(qū)別,這就為非計(jì)算機(jī)專業(yè)學(xué)生特別是文科專業(yè)背景的同學(xué)直觀的理解程序和代碼提供了較好的學(xué)習(xí)和實(shí)踐對象,并能與其學(xué)習(xí)和工作需求緊密結(jié)合[5]。因此作為入門練習(xí),可以通過在Word的基礎(chǔ)培訓(xùn)教學(xué)中,利用VBA與宏代碼的學(xué)習(xí)和實(shí)操,讓學(xué)生初步了解計(jì)算機(jī)高級語言與軟件運(yùn)行之間的內(nèi)在關(guān)系,并能進(jìn)一步自覺的學(xué)習(xí)和掌握那些在未來工作中所需的編程知識。以MS Word為例,可以在學(xué)習(xí)計(jì)算機(jī)原理及文字處理功能的的基礎(chǔ)上,設(shè)計(jì)一到兩個學(xué)時(shí)理論與實(shí)操相結(jié)合的入門課程以認(rèn)識宏并初步體驗(yàn)Word VBA編輯器的操作,也可以在電子文秘、管理信息系統(tǒng)等課程教學(xué)中安排宏錄制、修改、運(yùn)行、調(diào)試等過程演示和操作,讓學(xué)生初步了解宏錄制的操作過程及其與VBA之間的關(guān)系。練習(xí)設(shè)計(jì)應(yīng)從簡單的操作開始,以針對性和實(shí)用性強(qiáng)的練習(xí)結(jié)束,加上講解和指導(dǎo)的時(shí)間,將整個練習(xí)的時(shí)間控制在45~90min之間。endprint
4 課程設(shè)計(jì)
4.1 頁面設(shè)置練習(xí)
Word的頁面視圖是普通用戶最為熟悉的視圖,因?yàn)槠浣缑嫘螒B(tài)與打印機(jī)生成的紙質(zhì)文稿幾乎完全一致,因此Word排版中的頁面設(shè)置操作由于其直觀性而容易掌握,比如頁邊距、裝訂線的有無及其位置、紙張的尺寸、有無行號等屬性的取值,都可以通過可視化的交互式操作來實(shí)現(xiàn)。因此,宏的錄制操作入門可以優(yōu)先考慮通過對頁面設(shè)置操作過程的錄制來完成,可以引導(dǎo)學(xué)生將錄制得到的代碼同交互式操作過程加以比較,找到與自己的操作相對應(yīng)的宏代碼,然后通過在新文檔中運(yùn)行宏代碼再次執(zhí)行一次操作,再通過識別一些冗余代碼并加以刪除得到相同操作結(jié)果,或通過修改輸入?yún)?shù)而修改操作結(jié)果。通過這一練習(xí),學(xué)生可以對宏的錄制過程獲得較為深刻直觀的印象并初步領(lǐng)悟到計(jì)算機(jī)代碼與可視化操作平臺之間的關(guān)系,這時(shí)可以結(jié)合理論復(fù)習(xí)諸如“過程”、“結(jié)構(gòu)化程序”、“面向?qū)ο蠹夹g(shù)”、“可視化”、“語句”、“缺省”等概念,由于獲得了直觀的感受,學(xué)生大都能夠理解上述概念并掌握宏錄制的基本方法,通過刪除和修改代碼并能正確運(yùn)行后,更能增強(qiáng)繼續(xù)學(xué)習(xí)的信心。以Word 2003為例,錄制宏代碼及其修改結(jié)果如表1所示,在修改練習(xí)中可以指導(dǎo)學(xué)生插入一個MsgBox提示框,增強(qiáng)可視化并介紹“對象”及“交互式”等概念。
4.2 查找替換練習(xí)
通過4.1所述的練習(xí),學(xué)生能初步了解程序、對象、可視化和交互式等相關(guān)概念,在接下來的練習(xí)中有必要與日常的文檔編輯過程相結(jié)合,引入一些實(shí)用性較強(qiáng)的操作過程并仍然通過宏的錄制和修改來實(shí)現(xiàn)操作。在日常文檔處理和編輯中,經(jīng)常需要對來自網(wǎng)頁、PDF文檔、電子表格等來源的文字部分進(jìn)行拷貝和粘貼操作,在完成粘貼后由于原文特殊的格式或不規(guī)范編輯,會存在大量的多余空格、空白段落及手動換行符等內(nèi)容,可以通過Word 2003的查找替換功能將這些多余空格及符號刪除,操作過程錄制為宏,然后指導(dǎo)學(xué)生逐行理解代碼的含義并加以修改,錄制和修改結(jié)果如表2所示。
需要指出的是,由于Word2003在錄制無格式粘貼操作的時(shí)候,有一點(diǎn)小缺陷(該缺陷在Word2010版已經(jīng)得到糾正),將無格式文本粘貼錄制為Selection.PasteAndFormat (wdPasteDefault),需要指導(dǎo)學(xué)生在VBA編輯器中修改為Selection.PasteAndFormat (wdFormatPlainText),才能正常運(yùn)行。從ActiveWindow.ActivePane.VerticalPercentScrolled = 0到Selection.Find.Execute Replace:=wdReplaceAll都是通過對交互式操作的錄制得到的代碼,學(xué)生可以結(jié)合查找替換交互式操作界面很好的理解每一行代碼的含義。通過與查找替換操作過程比較,可以發(fā)現(xiàn)查找替換交互式操作的全過程在代碼中得到了完整的體現(xiàn),為學(xué)生提供了直觀的對照,并能使學(xué)生理解查找替換交互式操作過程中Word執(zhí)行了將查找和替換內(nèi)容清除格式的命令?!八阉鬟x項(xiàng)”中諸如“區(qū)分大小寫”(MatchCase)、“全字匹配”(MatchWholeWord)、“區(qū)分全/半角”(MatchByte)、“使用通配符”(MatchWildcards)、“同音”(MatchSoundsLike)、“查找單詞的所有形式”(MatchAllWordForms)等選項(xiàng)的代碼都能在程序語句中非常清晰的展現(xiàn)。
對于Wrap = wdFindContinue的含義的解釋說明,可以幫助學(xué)生理解批處理和循環(huán)執(zhí)行的含義。除此之外,如Application.ScreenUpdating = False、Application.ScreenUpdating = True語句的含義(關(guān)閉屏幕刷新和開啟屏幕刷新)可以讓學(xué)生對修改前后的代碼進(jìn)行比較,并解釋其作用以及Word中“對象”、“屬性”及其“取值”的含義等。粘貼完成前后,可以讓垂直滾動條返回第一頁的操作即ActiveWindow.ActivePane.VerticalPercentScrolled = 0,這一操作以ActivePane函數(shù)來完成,而且由于視覺效果明顯而容易理解,在后續(xù)的操作練習(xí)中可以直接加以利用。在講解中應(yīng)該將ActivePane函數(shù)與Len函數(shù)加以比較,并以實(shí)例來進(jìn)一步說明什么是函數(shù),直接調(diào)用函數(shù)有什么好處??梢詫en函數(shù)與錄制得到的宏代碼相比較,在宏代碼的錄制結(jié)果中,Word將反復(fù)執(zhí)行的查找替換過程記錄為多行“Selection.Find.Execute Replace:=wdReplaceAll”,也就是每按下一次“全部替換”按鈕,就執(zhí)行一次替換操作,刪除一個空白段落,這樣的操作雖然簡單易懂,但由于缺乏靈活性難以移植到其它文檔中,而通過Len函數(shù)就能更好的滿足不同的文檔的需求,如果學(xué)生有一定的基礎(chǔ),還可以簡要介紹With語句、Dim語句、For each…Next語句的功能以及變量和對象的含義,并突出VBA可以將變量申明為應(yīng)用程序中特殊對象的特性。
總的說來,通過同練習(xí)4.1比較,可以通過講解和引導(dǎo)讓學(xué)生進(jìn)一步理解以下知識:宏的本質(zhì)就是程序,一個完整的程序開頭和結(jié)尾是怎樣構(gòu)成的,結(jié)構(gòu)化的編程有什么特點(diǎn),程序中的語句和代碼是按照什么順序執(zhí)行的,哪些語句能省略,計(jì)算機(jī)高級語言從語法上來講有些什么特點(diǎn)等,教師可以以此為由強(qiáng)調(diào)交互式操作和可視化操作仍然是以程序和代碼為基礎(chǔ)的,要想在日常學(xué)習(xí)和工作中更好的掌握和利用諸如Word一類的應(yīng)用軟件,有必要在掌握交互式操作的基礎(chǔ)上適當(dāng)學(xué)習(xí)和掌握VBA編程的知識和技能。
4.3作業(yè)
結(jié)合兩次練習(xí),可以根據(jù)具體學(xué)時(shí)的安排布置課堂或課后作業(yè),建議以練習(xí)4.2為基礎(chǔ),讓學(xué)生在通過對“段落首行縮進(jìn)2字符”的操作過程進(jìn)行錄制,并把錄制得到的代碼刪除默認(rèn)設(shè)置相關(guān)代碼后加入“無格式粘貼中文”的過程中,經(jīng)調(diào)試能正常運(yùn)行并發(fā)揮作用,還可以要求在操作結(jié)尾添加一個MsgBox,提示完成操作。MS Word2003代碼如表3所示。endprint
5 結(jié)束語
VBA由于功能強(qiáng)大,在辦公自動化操作中能發(fā)揮相當(dāng)大的作用,但長期以來專門針對VBA的培訓(xùn)課程設(shè)置往往以Excel為主要平臺[6],由于Excel電子表格操作過程直觀性相對于Word等文字處理軟件稍弱,而且其中的對象和方法涉及到單元格、工作簿與工作表幾個層次的復(fù)雜關(guān)系,函數(shù)應(yīng)用也較多,給VBA的入門教學(xué)和練習(xí)帶來了一定程度的難度。本例使用學(xué)生熟悉和常見的Word(或WPS文字)作為VBA教學(xué)實(shí)操的入門和起點(diǎn),較Excel更加容易掌握。教學(xué)實(shí)踐也證明可以較好的避免由于對象的抽象性和操作過程的復(fù)雜而導(dǎo)致學(xué)生產(chǎn)生畏難情緒并降低學(xué)習(xí)效率,進(jìn)而可以循序漸進(jìn)的過渡到更為復(fù)雜的操作練習(xí)[7],為進(jìn)一步的VBA學(xué)習(xí)打下基礎(chǔ)。以Word VBA為起點(diǎn)的VBA理論和實(shí)操在大學(xué)計(jì)算機(jī)教育中加以應(yīng)用,還可以充當(dāng)橋梁,將以交互式操作為主的計(jì)算機(jī)公共基礎(chǔ)實(shí)操課程與電子文秘、信息技術(shù)與信息系統(tǒng)、辦公自動化高級運(yùn)用等涉及到代碼和編程思想與應(yīng)用的專業(yè)課程或?qū)I(yè)基礎(chǔ)課程相銜接,通過有效彌補(bǔ)文科專業(yè)背景大學(xué)生計(jì)算機(jī)軟件開發(fā)和程序設(shè)計(jì)方面知識的不足而改善這些課程的學(xué)習(xí)成效。但在教學(xué)中需要注意:從第一次操作練習(xí)開始,就應(yīng)該結(jié)合計(jì)算機(jī)病毒相關(guān)知識強(qiáng)調(diào)宏的安全性設(shè)置及其應(yīng)用,防范由于宏病毒帶來的安全隱患。
參考文獻(xiàn):
[1] 胡煥然,陳奉英.Word VBA 的幾種應(yīng)用[J].新余高專學(xué)報(bào),2007,12(4):74-76.
[2] 李曉波,周峰,王征.Excel VBA 2007 程序設(shè)計(jì)案例集錦 [M].北京:中國水利水電出版社, 2009:185.
[3] 楊曉亮. Word VBA高效排版范例應(yīng)用[M].北京:中國青年出版社,2005:1-15.
[4] 鄧劍文. 使用 VBA 開發(fā)文檔管理程序[J].南昌高專學(xué)報(bào):2006,21(5):100-101.
[5] 范曉燕,周濤峰.利用VBA 實(shí)現(xiàn) Word 文檔的批量拆分與合并[J].電腦知識與技術(shù),2011,7(7):1554-1556.
[6] 啟典文化,姬莉霞,張麗君. Excel VBA 高效辦公全能手冊[M].北京:中國鐵道出版社, 2009: 98.
[7] 何勇.親密無間—Word2000與其他Office程序間的合作[J].電腦技術(shù),2001(2):70-72.endprint
5 結(jié)束語
VBA由于功能強(qiáng)大,在辦公自動化操作中能發(fā)揮相當(dāng)大的作用,但長期以來專門針對VBA的培訓(xùn)課程設(shè)置往往以Excel為主要平臺[6],由于Excel電子表格操作過程直觀性相對于Word等文字處理軟件稍弱,而且其中的對象和方法涉及到單元格、工作簿與工作表幾個層次的復(fù)雜關(guān)系,函數(shù)應(yīng)用也較多,給VBA的入門教學(xué)和練習(xí)帶來了一定程度的難度。本例使用學(xué)生熟悉和常見的Word(或WPS文字)作為VBA教學(xué)實(shí)操的入門和起點(diǎn),較Excel更加容易掌握。教學(xué)實(shí)踐也證明可以較好的避免由于對象的抽象性和操作過程的復(fù)雜而導(dǎo)致學(xué)生產(chǎn)生畏難情緒并降低學(xué)習(xí)效率,進(jìn)而可以循序漸進(jìn)的過渡到更為復(fù)雜的操作練習(xí)[7],為進(jìn)一步的VBA學(xué)習(xí)打下基礎(chǔ)。以Word VBA為起點(diǎn)的VBA理論和實(shí)操在大學(xué)計(jì)算機(jī)教育中加以應(yīng)用,還可以充當(dāng)橋梁,將以交互式操作為主的計(jì)算機(jī)公共基礎(chǔ)實(shí)操課程與電子文秘、信息技術(shù)與信息系統(tǒng)、辦公自動化高級運(yùn)用等涉及到代碼和編程思想與應(yīng)用的專業(yè)課程或?qū)I(yè)基礎(chǔ)課程相銜接,通過有效彌補(bǔ)文科專業(yè)背景大學(xué)生計(jì)算機(jī)軟件開發(fā)和程序設(shè)計(jì)方面知識的不足而改善這些課程的學(xué)習(xí)成效。但在教學(xué)中需要注意:從第一次操作練習(xí)開始,就應(yīng)該結(jié)合計(jì)算機(jī)病毒相關(guān)知識強(qiáng)調(diào)宏的安全性設(shè)置及其應(yīng)用,防范由于宏病毒帶來的安全隱患。
參考文獻(xiàn):
[1] 胡煥然,陳奉英.Word VBA 的幾種應(yīng)用[J].新余高專學(xué)報(bào),2007,12(4):74-76.
[2] 李曉波,周峰,王征.Excel VBA 2007 程序設(shè)計(jì)案例集錦 [M].北京:中國水利水電出版社, 2009:185.
[3] 楊曉亮. Word VBA高效排版范例應(yīng)用[M].北京:中國青年出版社,2005:1-15.
[4] 鄧劍文. 使用 VBA 開發(fā)文檔管理程序[J].南昌高專學(xué)報(bào):2006,21(5):100-101.
[5] 范曉燕,周濤峰.利用VBA 實(shí)現(xiàn) Word 文檔的批量拆分與合并[J].電腦知識與技術(shù),2011,7(7):1554-1556.
[6] 啟典文化,姬莉霞,張麗君. Excel VBA 高效辦公全能手冊[M].北京:中國鐵道出版社, 2009: 98.
[7] 何勇.親密無間—Word2000與其他Office程序間的合作[J].電腦技術(shù),2001(2):70-72.endprint
5 結(jié)束語
VBA由于功能強(qiáng)大,在辦公自動化操作中能發(fā)揮相當(dāng)大的作用,但長期以來專門針對VBA的培訓(xùn)課程設(shè)置往往以Excel為主要平臺[6],由于Excel電子表格操作過程直觀性相對于Word等文字處理軟件稍弱,而且其中的對象和方法涉及到單元格、工作簿與工作表幾個層次的復(fù)雜關(guān)系,函數(shù)應(yīng)用也較多,給VBA的入門教學(xué)和練習(xí)帶來了一定程度的難度。本例使用學(xué)生熟悉和常見的Word(或WPS文字)作為VBA教學(xué)實(shí)操的入門和起點(diǎn),較Excel更加容易掌握。教學(xué)實(shí)踐也證明可以較好的避免由于對象的抽象性和操作過程的復(fù)雜而導(dǎo)致學(xué)生產(chǎn)生畏難情緒并降低學(xué)習(xí)效率,進(jìn)而可以循序漸進(jìn)的過渡到更為復(fù)雜的操作練習(xí)[7],為進(jìn)一步的VBA學(xué)習(xí)打下基礎(chǔ)。以Word VBA為起點(diǎn)的VBA理論和實(shí)操在大學(xué)計(jì)算機(jī)教育中加以應(yīng)用,還可以充當(dāng)橋梁,將以交互式操作為主的計(jì)算機(jī)公共基礎(chǔ)實(shí)操課程與電子文秘、信息技術(shù)與信息系統(tǒng)、辦公自動化高級運(yùn)用等涉及到代碼和編程思想與應(yīng)用的專業(yè)課程或?qū)I(yè)基礎(chǔ)課程相銜接,通過有效彌補(bǔ)文科專業(yè)背景大學(xué)生計(jì)算機(jī)軟件開發(fā)和程序設(shè)計(jì)方面知識的不足而改善這些課程的學(xué)習(xí)成效。但在教學(xué)中需要注意:從第一次操作練習(xí)開始,就應(yīng)該結(jié)合計(jì)算機(jī)病毒相關(guān)知識強(qiáng)調(diào)宏的安全性設(shè)置及其應(yīng)用,防范由于宏病毒帶來的安全隱患。
參考文獻(xiàn):
[1] 胡煥然,陳奉英.Word VBA 的幾種應(yīng)用[J].新余高專學(xué)報(bào),2007,12(4):74-76.
[2] 李曉波,周峰,王征.Excel VBA 2007 程序設(shè)計(jì)案例集錦 [M].北京:中國水利水電出版社, 2009:185.
[3] 楊曉亮. Word VBA高效排版范例應(yīng)用[M].北京:中國青年出版社,2005:1-15.
[4] 鄧劍文. 使用 VBA 開發(fā)文檔管理程序[J].南昌高專學(xué)報(bào):2006,21(5):100-101.
[5] 范曉燕,周濤峰.利用VBA 實(shí)現(xiàn) Word 文檔的批量拆分與合并[J].電腦知識與技術(shù),2011,7(7):1554-1556.
[6] 啟典文化,姬莉霞,張麗君. Excel VBA 高效辦公全能手冊[M].北京:中國鐵道出版社, 2009: 98.
[7] 何勇.親密無間—Word2000與其他Office程序間的合作[J].電腦技術(shù),2001(2):70-72.endprint