唐 娟
(湖北職業(yè)技術(shù)學院,湖北 孝感 432000)
Microsoft Excel軟件集成了種類繁多、功能各異的函數(shù),極大方便了廣大用戶利用該軟件進行信息的統(tǒng)計、分析和管理等工作。但由于函數(shù)使用方式的單一,并不能完全滿足學校工作的需要[1]。如批量對學生信息進行處理時,經(jīng)常需要拆分一個總表、合并多個子表以及提取學生照片等等,這些工作單靠工作人員用原始的手工復制、粘貼和保存來完成,不僅操作麻煩,工作效率低,還容易出錯。事實上,Microsoft Excel還有一個非常有用且功能強大的工具,即Excel VBA,通過一些合適的VBA代碼,可以避免這些繁雜的操作步驟,實現(xiàn)便利的各種功能。
VBA技術(shù)的實質(zhì)就是VB的編程,通過VB的編程完成需要的功能。VBA的服務(wù)對象是Office中的各個應(yīng)用程序。在Excel中,VBA的主要服務(wù)對象就是數(shù)據(jù)表和圖形圖像。VBA在Excel為它提供的平臺中可以充分展示自己的強大優(yōu)勢,在VBA的應(yīng)用下Excel的數(shù)據(jù)處理能力得到了進一步的提升[2]。VBA入門的門檻較低,編程要求并不高。
以下給出EXCEL 2010中VBA編程和執(zhí)行程序的基本步驟[3]:
(1)點擊“開發(fā)工具→Visual Basic編輯器”命令,進入“Visual Basic編輯器”窗口。
(2)在左側(cè)“工程資源管理器”窗口中,選中保存宏的工作簿,然后執(zhí)行“插入→模塊”命令,插入一個新模塊(模塊1)。
(3)將相關(guān)宏代碼輸入或復制、粘貼到右側(cè)的編輯窗口中。
注意:宏的結(jié)構(gòu)是:
Sub宏名稱()
相關(guān)代碼
End Sub
(4)輸入完成后,關(guān)閉“Visual Basic編輯器”窗口返回即可。
(5)執(zhí)行該程序,可以點擊“開發(fā)工具→宏”,選擇相應(yīng)的宏名即可。
學校各部門會下發(fā)很多表格給各個班級填報,如學生信息表,各類證書考試報名數(shù)據(jù)表,學生體檢情況表,學生銀行卡號表,學生交費統(tǒng)計表等等,這些信息大多是用EXCEL電子表格來存儲。有時需要按班級將一個總表分成獨立的工作表分發(fā)到各班,有時又需要將各班填報好的獨立工作表匯成一個總表,有時還需要再次分發(fā)給各班核對修改,所以這就需要頻繁進行兩種操作:將各個工作表合并成一個總表或者將總表拆分成各個工作表。學校工作人員可以基于EXCEL VBA,為以上兩個操作分別編寫宏,下面以合并一個工作簿下所有工作表為例,給出其功能代碼。
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"當前工作簿下的全部工作表已經(jīng)合并完畢!"End Sub
學生經(jīng)常會集體報考一些證書類考試,為了保證報名時個人信息與照片相對應(yīng),且報名的各項數(shù)據(jù)不出任何差錯,可以將個人信息和照片制成一個電子表格打印出來,讓各班學生核對并簽字。學校一般都會存有學生以身份證號命名的學籍照,將這些照片集中存放在一個文件夾中,便可以利用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列開始逐次向下取身份證號,并將照片放在第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’選擇要插入圖片的單元格作為目標
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
實現(xiàn)效果如圖1所示。
圖1 EXCEL工作表提取照片效果圖
利用VBA編程批量處理學生信息,幫助廣大用戶從繁重的數(shù)據(jù)處理中解脫出來,實現(xiàn)高效、準確的信息管理。以上給出的功能代碼,可供學校行政管理人員參考使用。
[1]馮陳芙.EXCEL VBA在高校教務(wù)管理中的應(yīng)用[J].辦公自動化,2015,2.
[2]趙志東.Excel VBA技巧應(yīng)用[J].北京:人民郵電出版社,2007.
[3]李曉玫,楊小平.Excel中的VBA程序設(shè)計[J].四川師范大學學報,2004,7.