摘 要 Visual Basic for Applications(VBA)是一種Visual Basic的一種宏語言,主要能用來擴展Windows的應用程式功能,特別是Microsoft Office軟件。也可說是一種應用程式視覺化的Basic Script。本文著重介紹運用VBA在EXCEL中實現對圖片文件的批量命名。
關鍵詞 VBA 宏語言 批量命名
中圖分類號:TP391.1文獻標識碼:A
0 引言
在大學學生管理中,我們經常會遇到這樣的問題,我們對學生進行圖像信息采集的時候,圖像采集完了,但是文件名稱并沒有達到我們的要求。比如我們要求用學生的身份證號碼來命名對應學生的照片。如果按照原始的重命名方式為每個文件重命名,工作效率是相當低的。那么,有沒有一種好的辦法拋開原始的重命名方式,實現圖片的批量命名呢?帶著這個問題,我們首先想到了VBA,利用VBA能夠很好地解決此問題。
1 什么是VBA
Visual Basic for Applications(VBA)是一種Visual Basic的一種宏語言,主要能用來擴展Windows的應用程式功能,特別是Microsoft Office軟件。也可說是一種應用程式視覺化的Basic Script。例如:可以用EXCEL的宏語言來使EXCEL自動化,使用WORD BASIC使WORD自動化,等等。
2 在EXCEL中應用VBA實現對圖片文件的批量命名
在某EXCEL表中,有A,B兩列數據( A:姓名,B:身份證號碼);某文件夾中,有一批以此excel表中的姓名命名的照片。現在需要用相對應的身份證號重命名這批照片,我們用VBA來實現。
利用VBA實現圖片批量重命名步驟:(1)利用消息框提示用戶選擇需要重命名文件所在的文件夾在磁盤中的位置。(2)判斷指定文件夾中的文件是否存在。(3)如果存在判斷文件名稱是否和EXCEL表中某一列數據相對應(本例中,文件夾中圖片是以EXCEL表中的姓名命名的)。(4)遍歷EXCEL表中姓名列判斷是否與文件夾中文件名稱對應。(5)如果對應就用EXCEL表中身份證號碼列數據重命名文件夾中文件的文件名。
3 實現過程
建立一個工作簿。
在EXCEL表中,依次進行如下操作:
單擊sheet1空白單元格->【工具】->【宏】->【Visual Basic 編輯器】,到此,就新建了一個VBA工程。
在VBA工程編輯器中雙擊Sheet1打開Sheet1代碼窗口,在其中輸入以下代碼。
如下圖所示:
圖1
程序代碼:
Sub rename()
MsgBox \"請選擇要重命名文件所在的文件夾\"
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Show
reNamePath = .SelectedItems(1)
If Right(reNamePath, 1) <> \"\\\" Then
reNamePath = reNamePath + \"\\\"
End If
End With
Range(\"a2\").End(xlDown).Select
rCount = ActiveCell.Row
Dim fs
Set fs = CreateObject(\"Scripting.FileSystemObject\")
For r = 2 To rCount
oName = reNamePath Cells(r, 1) \".jpg\"
If fs.FileExists(oName) Then
nName = reNamePath Cells(r, 2) \".jpg\"
Name oName As nName
End If
Next r
End Sub
以上程序代碼為用EXCEL表中第二列數據即身份證號碼為文件夾中的圖片重命名。由于篇幅有限,我們對以上的代碼參數稍加改動,還可以拓展延伸,比如用學生的學號為照片重命名。
參考文獻
[1] 伊利奇,王保眾.透視Excel VBA應用與開發.人民郵電出版社,2008.1.
[2] 魏汪洋.從零開始學Excel VBA.電子工業出版社,2011.2.