唐 娟
(湖北職業(yè)技術(shù)學(xué)院,湖北 孝感 432000)
Microsoft Excel軟件集成了種類繁多、功能各異的函數(shù),極大方便了廣大用戶利用該軟件進(jìn)行信息的統(tǒng)計(jì)、分析和管理等工作。但由于函數(shù)使用方式的單一,并不能完全滿足學(xué)校工作的需要[1]。如批量對(duì)學(xué)生信息進(jìn)行處理時(shí),經(jīng)常需要拆分一個(gè)總表、合并多個(gè)子表以及提取學(xué)生照片等等,這些工作單靠工作人員用原始的手工復(fù)制、粘貼和保存來(lái)完成,不僅操作麻煩,工作效率低,還容易出錯(cuò)。事實(shí)上,Microsoft Excel還有一個(gè)非常有用且功能強(qiáng)大的工具,即Excel VBA,通過(guò)一些合適的VBA代碼,可以避免這些繁雜的操作步驟,實(shí)現(xiàn)便利的各種功能。
VBA技術(shù)的實(shí)質(zhì)就是VB的編程,通過(guò)VB的編程完成需要的功能。VBA的服務(wù)對(duì)象是Office中的各個(gè)應(yīng)用程序。在Excel中,VBA的主要服務(wù)對(duì)象就是數(shù)據(jù)表和圖形圖像。VBA在Excel為它提供的平臺(tái)中可以充分展示自己的強(qiáng)大優(yōu)勢(shì),在VBA的應(yīng)用下Excel的數(shù)據(jù)處理能力得到了進(jìn)一步的提升[2]。VBA入門的門檻較低,編程要求并不高。
以下給出EXCEL 2010中VBA編程和執(zhí)行程序的基本步驟[3]:
(1)點(diǎn)擊“開發(fā)工具→Visual Basic編輯器”命令,進(jìn)入“Visual Basic編輯器”窗口。
(2)在左側(cè)“工程資源管理器”窗口中,選中保存宏的工作簿,然后執(zhí)行“插入→模塊”命令,插入一個(gè)新模塊(模塊1)。
(3)將相關(guān)宏代碼輸入或復(fù)制、粘貼到右側(cè)的編輯窗口中。
注意:宏的結(jié)構(gòu)是:
Sub宏名稱()
相關(guān)代碼
End Sub
(4)輸入完成后,關(guān)閉“Visual Basic編輯器”窗口返回即可。
(5)執(zhí)行該程序,可以點(diǎn)擊“開發(fā)工具→宏”,選擇相應(yīng)的宏名即可。
學(xué)校各部門會(huì)下發(fā)很多表格給各個(gè)班級(jí)填報(bào),如學(xué)生信息表,各類證書考試報(bào)名數(shù)據(jù)表,學(xué)生體檢情況表,學(xué)生銀行卡號(hào)表,學(xué)生交費(fèi)統(tǒng)計(jì)表等等,這些信息大多是用EXCEL電子表格來(lái)存儲(chǔ)。有時(shí)需要按班級(jí)將一個(gè)總表分成獨(dú)立的工作表分發(fā)到各班,有時(shí)又需要將各班填報(bào)好的獨(dú)立工作表匯成一個(gè)總表,有時(shí)還需要再次分發(fā)給各班核對(duì)修改,所以這就需要頻繁進(jìn)行兩種操作:將各個(gè)工作表合并成一個(gè)總表或者將總表拆分成各個(gè)工作表。學(xué)校工作人員可以基于EXCEL VBA,為以上兩個(gè)操作分別編寫宏,下面以合并一個(gè)工作簿下所有工作表為例,給出其功能代碼。
Sub HBGZB()
Application.Screen Updating=False
For j=1 To Sheets.Count ’定義J=1到單元表數(shù)量
If Sheets(j).Name<>Active Sheet.Name Then
X=Range("A65536").End(xlUp).Row+1
Sheets(j).Used Range.Copy Cells(X,1)
End If
Next
Range("B1").Select
Application.Screen Updating=True
Msg Box"當(dāng)前工作簿下的全部工作表已經(jīng)合并完畢!"End Sub
學(xué)生經(jīng)常會(huì)集體報(bào)考一些證書類考試,為了保證報(bào)名時(shí)個(gè)人信息與照片相對(duì)應(yīng),且報(bào)名的各項(xiàng)數(shù)據(jù)不出任何差錯(cuò),可以將個(gè)人信息和照片制成一個(gè)電子表格打印出來(lái),讓各班學(xué)生核對(duì)并簽字。學(xué)校一般都會(huì)存有學(xué)生以身份證號(hào)命名的學(xué)籍照,將這些照片集中存放在一個(gè)文件夾中,便可以利用vba編程,將這些照片提取到電子表格中,以下是相應(yīng)的功能代碼。
sub ZPTQ()
’所需的照片為.jpg格式,照片大小一致,放在“照片”文件夾,該文件
夾和excel文檔同一目錄
For Each Shp In Active Sheet.Shapes
If Shp.Type=mso Picture Then Shp.Delete
Next
Dim My Pc Name As String
For i=2 To This Workbook.Active Sheet.Used Range.Rows.Count
’從第2行、3列開始逐次向下取身份證號(hào),并將照片放在第4列單元格內(nèi)
My Pc Name=Active Sheet.Cells(i,3).Value&".jpg"
’Msg Box"圖片的完整路徑是"&This Workbook.Path&"照片"&My Pc Name
Active Sheet.Cells(i,4).Select’選擇要插入圖片的單元格作為目標(biāo)
Dim MyFile As Object
Set MyFile=Create Object("Scripting.File System Object")
If MyFile.File Exists(This Workbook.Path&"照片 "&MyPcName)=False Then
Msg Box This Workbook.Path&"照片"&MyPcName&"圖片不存在"
Else
’在選定的單元格中插入圖片
Active Sheet.Pictures.Insert(This Workbook.Path&"照片"&MyPcName).Select
End If
Next i
end sub
實(shí)現(xiàn)效果如圖1所示。
圖1 EXCEL工作表提取照片效果圖
利用VBA編程批量處理學(xué)生信息,幫助廣大用戶從繁重的數(shù)據(jù)處理中解脫出來(lái),實(shí)現(xiàn)高效、準(zhǔn)確的信息管理。以上給出的功能代碼,可供學(xué)校行政管理人員參考使用。
[1]馮陳芙.EXCEL VBA在高校教務(wù)管理中的應(yīng)用[J].辦公自動(dòng)化,2015,2.
[2]趙志東.Excel VBA技巧應(yīng)用[J].北京:人民郵電出版社,2007.
[3]李曉玫,楊小平.Excel中的VBA程序設(shè)計(jì)[J].四川師范大學(xué)學(xué)報(bào),2004,7.