A列原文件名,B列新文件名
把excel放到和要修改的文件同目录下
运行以下宏
Sub rename()
Dim fs
Dim pah As String
Dim oldName As String
Dim newName As String
pah = ThisWorkbook.Path
Set fs = CreateObject("Scripting.FileSystemObject")
arr = [A1].CurrentRegion
For i = 1 To UBound(arr, 1)
oldName = pah & "\" & arr(i, 1)
newName = pah & "\" & arr(i, 2)
If fs.FileExists(pah & "\" & arr(i, 1)) Then
Name oldName As newName
End If
Next
End Sub
追问帮帮我吧,真的是很头大呀!
追答代码都给你了啊。。。
A列原文件名,B列对应新文件名
然后运行宏就好了。
不知道宏怎么用?
Alt+F11》新窗口中》插入》模块》复制代码到里面》F5!
执行前先备份好原文件,免得误操作
追问运行时错误 13
类型不匹配
追答A列原文件名,B列对应新文件名
你有没有按这个排列啊?
你图片里第3行,2015/07/02这种格式的含有非法字符,是不能作为文件名的
还有,你的描述太简单了,改名的规则是什么?
文件名怎么放的都没说啊 。
追问改名后整个文件名就是B1里的内容
追答是工作表名还是工作簿名?
追问原文件名我知道怎么提取,表格里的B1内容我就不知道怎么批量提取了
追答这个费劲了。。
Sub rename()
Dim nm As String, filePath As String
Dim newName As String
Dim wb As Workbook
Set wb = ActiveWorkbook
filePath = wb.Path & "\"
nm = Dir(filePath & "*.xls*")
Application.DisplayAlerts = False
Do While Len(nm) <> 0
If nm <> wb.Name Then
Workbooks.Open filePath & nm
newName = Workbooks(nm).Worksheets(1).[b1]
If newName <> "" Then
Workbooks(nm).SaveAs newName
Workbooks(newName).Close
Else
Workbooks(nm).Close
End If
End If
nm = Dir()
Loop
Application.DisplayAlerts = True
End Sub
新建个启用宏的工作簿,然后复制代码,自动另存,然后你在根据修改时间来分吧