今天說(shuō)說(shuō)怎么利用VBA重命名文件夾的文件。
1.代碼思路
(1) Shell.BrowseForFolder獲取文件夾路徑。
(2)DIR提取文件夾下的文件與子文件夾。
(3)在工作表寫(xiě)好新路徑,利用name語(yǔ)句批量重命名。
2.主要知識(shí)點(diǎn)
Shell.BrowseForFolder可以創(chuàng)建一個(gè)對(duì)話框讓用戶選擇一個(gè)文件夾,然后返回所選文件夾的Folder對(duì)象??梢詫?shí)現(xiàn)獲取文件夾的絕對(duì)路徑。
這里就不贅述了,不了解的可以去看看這篇文章:VBA打開(kāi)對(duì)話框選擇文件夾。
DIR函數(shù)提取文件路徑,在這一篇文章也講過(guò):DIR函數(shù)遍歷文件。
3.代碼示例
先運(yùn)行Sub 批量獲取文件名(),然后寫(xiě)入新文件名,最后運(yùn)行Sub 批量重命名()。
Sub 批量獲取文件名()
Cells = "" '清空工作表內(nèi)容
Dim sfso
Dim myPath As String
Dim Sh As Object
Dim Folder As Object
Application.ScreenUpdating = False
On Error Resume Next
Set sfso = CreateObject("Scripting.FileSystemObject")
Set Sh = CreateObject("shell.application")
Set Folder = Sh.BrowseForFolder(0, "", 0, "")
If Not Folder Is Nothing Then
myPath = Folder.Items.Item.Path
End If
Application.ScreenUpdating = True
Cells(1, 1) = "舊版名稱(chēng)"
Cells(1, 2) = "文件類(lèi)型"
Cells(1, 3) = "所在位置"
Cells(1, 4) = "新版名稱(chēng)"
Call 直接提取文件名(myPath & "\")
End Sub
Sub 直接提取文件名(myPath As String)
Dim i As Long
Dim myTxt As String
i = Range("A1048576").End(xlUp).Row
'這里的31,是把0、1、2、4、8、16
'加起來(lái)得到的,表示這些類(lèi)型的文件都讀取
myTxt = Dir(myPath, 31)
Do While myTxt <> ""
On Error Resume Next
If myTxt <> ThisWorkbook.Name And myTxt <> "." And myTxt <> ".." And myTxt <> "081226" Then
i = i + 1
Cells(i, 1) = "'" & myTxt '加'轉(zhuǎn)成文本
'形成超鏈接 可以打開(kāi)文件
Cells(i, 1).Hyperlinks.Add Anchor:=Cells(i, 1), Address:=myPath & myTxt
'判斷為文件夾還是文件
If (GetAttr(myPath & myTxt) And vbDirectory) = vbDirectory Then
Cells(i, 2) = "文件夾"
Else
Cells(i, 2) = "文件"
End If
'存放文件夾的路徑并形成超鏈接
Cells(i, 3) = Left(myPath, Len(myPath) - 1)
Cells(i, 3).Hyperlinks.Add Anchor:=Cells(i, 3), Address:=Left(myPath, Len(myPath) - 1)
End If
myTxt = Dir
Loop
End Sub
Sub 批量重命名()
Dim y_name As String
Dim x_name As String
For i = 2 To Range("A1048576").End(xlUp).Row
y_name = Cells(i, 3) & "\" & Cells(i, 1) '舊路徑
x_name = Cells(i, 3) & "\" & Cells(i, 4) '新路徑
On Error Resume Next
If Cells(i, 4) <> "" Then Name y_name As x_name 'Y名字被改成X名字
Next
MsgBox "重命名完成"
End Sub
4.操作視頻(41s)
歷史文章推薦
1.可以延時(shí)關(guān)閉的VBA消息框
2.VBA網(wǎng)抓解決漢字轉(zhuǎn)拼音
3.VBA給微信聯(lián)系人發(fā)送消息
VBA愛(ài)好者
如果你也喜歡VBA,就關(guān)注我吧~
55篇原創(chuàng)內(nèi)容
公眾號(hào)