Word算得上是使用最廣泛的應(yīng)用軟件了,但是如果你僅僅用它來(lái)打打字、畫(huà)畫(huà)表,那就太平淡無(wú)奇了,也有些委屈了Word。Word不僅有強(qiáng)大的文字編輯能力,它還內(nèi)嵌一個(gè)VBA(Visual Basic for Applications)編程環(huán)境,可以開(kāi)發(fā)出滿足個(gè)性需求的功能來(lái)。
本人利用VBA編寫了一個(gè)“Word講笑話”,做出來(lái)后頗有成就感,現(xiàn)將開(kāi)發(fā)過(guò)程和心得寫出來(lái)與讀者朋友分享。
能實(shí)現(xiàn)的功能是:當(dāng)每次啟動(dòng)Word時(shí)將自動(dòng)運(yùn)行“Word講笑話”,能隨機(jī)的顯示一條笑話(當(dāng)然,笑話得事先錄入好并保存在一個(gè)文本文件中)?!癢ord講笑話”的面板中一共有三個(gè)按鈕,點(diǎn)擊“下一條”可繼續(xù)閱讀其它笑話,點(diǎn)擊“關(guān)于”可顯示作者和幫助信息,點(diǎn)擊“關(guān)閉”將關(guān)閉窗口。面板中還有一個(gè)復(fù)選框,可以讓用戶自由決定下次啟動(dòng)Word時(shí)是否顯示笑話。
開(kāi)發(fā)過(guò)程主要有以下幾個(gè)環(huán)節(jié)(以Word XP為例):
一、建立窗體
窗體是窗口和對(duì)話框的統(tǒng)稱,它是Windows應(yīng)用程序的用戶界面的基礎(chǔ)部分。窗體是控件的容器,用來(lái)放置文本框、命令按鈕、復(fù)選框等各種控件。
1、啟動(dòng)Word,單擊菜單“工具→宏→Visual Basic編輯器”,也可以按快捷鍵[Alt+F11],切換到Visual Basic編輯器窗口。
2、單擊菜單“插入→用戶窗體”,系統(tǒng)建立一個(gè)默認(rèn)樣式的用戶窗體。對(duì)窗體可拖動(dòng)其右、下邊的小方框來(lái)可改變大小,本例中根據(jù)功能需要將窗體拖為扁長(zhǎng)形狀。
3、單擊菜單“視圖→屬性窗口”,在屬性窗口中修改窗體的幾個(gè)主要屬性值。在屬性列表中選定“名稱”屬性,輸入“Xiaohua”,然后選定“Caption”屬性,輸入“Word講笑話”?,F(xiàn)在,我們便能看到一個(gè)標(biāo)題為“Word講笑話”的窗體了。
小提示:窗體中的點(diǎn)狀物稱為“網(wǎng)格”,它能在建立控件時(shí)起位置參考和智能對(duì)齊的作用,單擊菜單“工具→選項(xiàng)”,選擇“通用”選項(xiàng)卡,可修改網(wǎng)格的選項(xiàng)和網(wǎng)格塊的大小,建議使用較小的網(wǎng)格設(shè)置,這樣能使控件更靠近窗體邊緣的位置,以達(dá)到美觀的效果。
二、建立控件
建立了窗體就相當(dāng)于打好了地基,下一步的工作就是“添磚加瓦”了,也就是建立控件。常用控件包括文本框、命令按鈕、標(biāo)簽、復(fù)選框、滾動(dòng)條等。建立控件的方法很簡(jiǎn)單,單擊菜單“視圖→工具箱”調(diào)出工具箱,在“工具箱”中選擇控件類型,然后在窗體上單擊或拖動(dòng)即可。
1、創(chuàng)建文本框:在“工具箱”中選擇“AB|”樣式的按鈕,在窗體上拖動(dòng)建立一個(gè)文本框,并用鼠標(biāo)調(diào)整其位置、大小,若需精確調(diào)整,也可在屬性窗口中調(diào)整“Height”、“Width”等屬性值。很關(guān)鍵的一點(diǎn)是要將“MultiLine”屬性值設(shè)為“True”,它的作用是使文本框能顯示多行文本。
2、創(chuàng)建命令按鈕:在“工具箱”中選擇命令按鈕(鼠標(biāo)懸停會(huì)顯示“命令按鈕”字樣),在窗體上的文本框右邊拖動(dòng)建立一個(gè)命令按鈕,調(diào)整好大小并修改其“Caption”屬性值為“下一條”,接著依次建立“關(guān)閉”、“關(guān)于”按鈕。
3、創(chuàng)建復(fù)選框:在“工具箱”中選擇復(fù)選框按鈕,在窗體上的文本框下方單擊鼠標(biāo)左鍵,便創(chuàng)建了一個(gè)復(fù)選框,修改其“Caption”屬性值為“下次啟動(dòng)時(shí)不顯示”。
4、創(chuàng)建標(biāo)簽:可在窗體的空余部分以“標(biāo)簽”的形式顯示作者等信息。
小提示:為了使窗體、控件看起來(lái)更美觀、協(xié)調(diào),可以使用“格式”菜單下的“統(tǒng)一尺寸”命令項(xiàng)使按鈕大小相同,使用“對(duì)齊”、“水平間距”、“垂直間距”等命令項(xiàng),使各控件均勻、合理的布置在窗體中。
三、編寫代碼
上面建立的窗體和控件還只是“徒有其表”,因?yàn)檫€沒(méi)有為各個(gè)控件賦予具體的功能,接下來(lái)就需要編寫VBA代碼 ,通過(guò)代碼告訴各控件在什么情況下該執(zhí)行什么任務(wù)。編寫代碼的方法是:?jiǎn)螕舨藛巍耙晥D→代碼”或按F7鍵,即切換到代碼窗口,可在代碼窗口的聲明部分(頂端空白區(qū)域)開(kāi)始錄入代碼。
首先要編寫的是公用Sub過(guò)程的代碼,Sub過(guò)程是一系列由Sub和End Sub語(yǔ)句包含起來(lái)的 VBA 語(yǔ)句。以下兩個(gè)Sub過(guò)程分別實(shí)現(xiàn)顯示笑話和關(guān)閉窗體的功能。代碼如下:
Sub 顯示笑話()
Dim line$(500) '定義笑話文件的最大行數(shù)
Open "c:xiaohua.dat" For Input As #1 '打開(kāi)笑話文件
Do While Not EOF(1)
N = N + 1
Input #1, line$(N) '讀入笑話內(nèi)容到變量
Loop
Close #1
Randomize
num = Int(N * Rnd + 1) '產(chǎn)生隨機(jī)數(shù)
Do While line$(num) = "" '識(shí)別并忽略空行
num = num + 1
If num = N + 1 Then num = 1
Loop
TextBox1.Text = line$(num) '顯示笑話內(nèi)容
End Sub
Sub 結(jié)束()
Open "c:xiaohua.ddd" For Output As #1
If CheckBox1.Value = True Then '結(jié)束前檢查是否選中復(fù)選框
Print #1, "no" '若選中則寫入判斷因子“no”
Else: Print #1, "yes" '未選中則寫入判斷因子“yes”
End If
Close #1
End '關(guān)閉窗體
End Sub
小提示:
1、上面的笑話文件c:xiaohua.dat是一個(gè)純文本文件,需事先用記事本錄入保存,在錄入或維護(hù)時(shí)要求每條笑話獨(dú)占一行(不回車換行),兩條笑話之間可插入一個(gè)或多個(gè)空行,笑話文件的總行數(shù)不能超過(guò)定義的最大行數(shù)。
2、文件c:xiaohua.ddd也是一個(gè)純文本文件,其作用是被用來(lái)放置判斷因子,后續(xù)步驟中的宏代碼將根據(jù)此文件中的判斷因子來(lái)決定是否在啟動(dòng)Word時(shí)顯示笑話。此文件不需手工建立,由程序自動(dòng)生成。
接下來(lái)要編寫進(jìn)入、離開(kāi)窗體時(shí)、單擊“下一條”、“關(guān)閉”等按鈕時(shí)的事件過(guò)程,當(dāng)發(fā)生事件時(shí)將調(diào)用公用的Sub過(guò)程來(lái)執(zhí)行功能。代碼如下:
Private Sub UserForm_Activate()
'運(yùn)行窗體時(shí)
顯示笑話
End Sub
Private Sub CommandButton1_Click()
'單擊“下一頁(yè)”按鈕時(shí)
顯示笑話
End Sub
Private Sub CommandButton2_Click()
'單擊“關(guān)閉”按鈕時(shí)
結(jié)束
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'通過(guò)其它途徑關(guān)閉窗體
結(jié)束
End Sub
Private Sub CommandButton3_Click()
MsgBox "關(guān)于軟件相關(guān)說(shuō)明。。。"
End Sub
小提示:這一部分代碼可以緊接第一部代分碼連續(xù)錄入,也可在代碼窗口的“對(duì)象框”、“過(guò)程/事件框”中分別選擇對(duì)象和事件,然后在自動(dòng)給出的Private Sub…與Sub之間輸入要調(diào)用的Sub過(guò)程名,這樣減輕了錄入量,并減少了出錯(cuò)的可能性。
四、完善功能
完成上面三步便初具規(guī)模了,窗體已經(jīng)能夠運(yùn)行,但復(fù)選框的作用還不能發(fā)揮出來(lái)。接下來(lái)通過(guò)創(chuàng)建宏來(lái)完善窗體功能。
創(chuàng)建宏的方法是:?jiǎn)螕舨藛巍肮ぞ摺辍保凇昂昝蔽谋究蛑休斎牒昝癆utoexec”,接著單擊“創(chuàng)建”,錄入完成以下代碼:
Sub Autoexec()
On Error GoTo err '出錯(cuò)處理
Open "c:xiaohua.ddd" For Input As #1
Input #1, Ask$ '讀取判斷因子
Close #1
If Ask$ = "yes" Then Xiaohua.Show
'若判斷因子為yes則運(yùn)行xiaohua窗體
err:
End Sub
Sub 笑話()
Xiaohua.Show
End Sub
錄入完畢后關(guān)閉Visual Basic窗口返回到Word。以上代碼創(chuàng)建兩個(gè)宏,Autoexec宏是一個(gè)自動(dòng)宏,它在Word啟動(dòng)時(shí)自動(dòng)運(yùn)行,并根據(jù)讀取的判斷因子來(lái)決定是否運(yùn)行窗體。名為“笑話”的宏則無(wú)條件運(yùn)行xiaohua窗體,為了能方便的運(yùn)行這個(gè)宏,我們可把它添加為菜單命令,方法是:?jiǎn)螕簟肮ぞ摺远x”,選擇“命令”選項(xiàng)卡,在“類別”框中找到“宏”,將右邊的“命令”框中“Normal.NewMacros.笑話”拖入菜單“工具”中,并對(duì)拖入的命令點(diǎn)右鍵,在“命名”文本框中重命名為“Word講笑話”。
至此,全部工作完成。當(dāng)Word啟動(dòng)時(shí)就能看到笑話了,平時(shí)要閱讀笑話時(shí),單擊菜單“工具→Word講笑話”即可。若選中了“下次啟動(dòng)時(shí)不顯示”復(fù)選框,以后也可隨時(shí)使用它的菜單命令來(lái)恢復(fù)顯示。
小提示:不知你發(fā)現(xiàn)沒(méi)有,上面做出來(lái)的這個(gè)小東東,和很多軟件的“每次一貼”、“日積月累”非常的相似,而獨(dú)到之處是可以自己決定要顯示的內(nèi)容,如果你還想看些名人名言來(lái)提高自己的修養(yǎng),或者想多學(xué)些電腦小技巧,不妨把這些內(nèi)容組織進(jìn)去,用它來(lái)做最具有個(gè)性化的“日積月累”妙妙貼。