概述:数据以电商公司实际的应用需求出发,现在有某个平台的各店铺销售账单,现在需要匹配修改表名。原始表名如下:
现在需要批量将“速卖通店铺”修改为 “smt”,当表格较少的时候(<5)可以利用重命名的方式来处理。如果一个文件夹中存在100个、1000个是否存在较便捷的方式来进行批量处理。显然,此时一个一个手工重命名费时费力。下面,我们看如何使用VBA来30秒搞定。
1、 将文件夹“smtOrder(2019-05)20191109191825”放在桌面上(随意存在哪里均可以);
2、在文件夹“smtOrder(2019-05)20191109191825”中建立一个新的表格;
3、打开新建的工作表,选择 开发工具>VB编辑器>插入>模块
4、复制如下代码块,并运行
Sub 批量获取文件名()
Cells = ""
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) = "旧版名称"
Cells(1, 2) = "文件类型"
Cells(1, 3) = "所在位置"
Cells(1, 4) = "新版名称"
Call 直接提取文件名(myPath & "")
End Sub
'获取选定文件夹下的所有表格名称
Sub 直接提取文件名(myPath As String)
Dim i As Long
Dim myTxt As String
i = Range("A1048576").End(xlUp).Row
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
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)
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
Name y_name As x_name
Next
End Sub
运行后,返回新建的excel表格,可以看到:
现在excel表格表格中,批量生成新版名称的文件名:
接着再返回VB代码界面,再次运行代码(选择宏名称:批量重命名)
修改后:
批量修改表名完成,上文比较啰嗦,但VBA在批量处理表格真的很实用方便。后面将继续更新VBA在其他批量处理表格方面的实际应用