如何批量修改excel的文件名,文件名在每个表格的固定位置

就是把文件名改成表格中B1的内容,
文件实在太多,成千上万个,手改太慢,本人不怎么会excel,
求大神!急!
每个文件的名字都不一样

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

新建个启用宏的工作簿,然后复制代码,自动另存,然后你在根据修改时间来分吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-06
需要用vba来做;你用WPS可能不行追问

随便什么,我有sffice,求教!

追答

可以在一个Office Excel里编程序解决

追问

太笼统了把

追答

给几个文件发至Q422714303看看

相似回答