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