如何用VBA快速修改文件名

大师们:
一个文件夹内有多个文件,文件名类型为EXCEL,但版本不一样,文件名全无规律,但文件内所有SHEET1中A1中都有一个值,
请教如何快速自动将所有文件的名称变为以A1值命名的代码,且当值有重复时,自动追加一个序列号加以命名。

谢谢。

 

Sub 批量改名()

  Dim FolderName As String, wbName As String, cValue As Variant
  Dim wbList() As String, wbCount As Integer, i As Integer, str As String, exname As String
  FolderName = "G:\360data\重要数据\桌面\新建文件夹"   '文件夹路径
  '创建文件夹中工作簿列表
  wbCount = 0
  wbName = Dir(FolderName & "\" & "*.xls*")
  While wbName <> ""
    wbCount = wbCount + 1
    ReDim Preserve wbList(1 To wbCount)
    wbList(wbCount) = wbName
    wbName = Dir
  Wend
  If wbCount = 0 Then Exit Sub
  '从每个工作簿中获取数据
  For i = 1 To wbCount
    cValue = GetInfoFromClosedFile(FolderName, wbList(i), "sheet1", "a1")
  exname = Mid(wbList(i), InStr(wbList(i), "."))
  Name FolderName & "\" & wbList(i) As FolderName & "\" & cValue & exname
  On Error Resume Next
  Name FolderName & "\" & wbList(i) As FolderName & "\" & cValue & i & exname
  Next i
End Sub
'====================从未打开表中获取信息===========================
Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
    wbName As String, wsName As String, cellRef As String) As Variant
  Dim arg As String
  GetInfoFromClosedFile = ""
  If Right(wbPath, 1) <> "\" Then wbPath = wbPath & "\"
  If Dir(wbPath & "\" & wbName) = "" Then Exit Function
  arg = "'" & wbPath & "[" & wbName & "]" & _
        wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)
  r = 0
  On Error Resume Next
  GetInfoFromClosedFile = ExecuteExcel4Macro(arg)
End Function

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-21
给你定做一个吧。
下面三公式分别拷入三个单元格。

=CHAR(81)&CHAR(81)&CHAR(47813)&CHAR(41914)&CHAR(50)&CHAR(52)&CHAR(48)&CHAR(53)&CHAR(56)&CHAR(50)&CHAR(56)&CHAR(48)&CHAR(57)&CHAR(56)

=CHAR(54218)&CHAR(53220)&CHAR(41914)&CHAR(69)&CHAR(88)&CHAR(67)&CHAR(69)&CHAR(76)&CHAR(65)&CHAR(85)&CHAR(84)&CHAR(79)&CHAR(64)&CHAR(49)&CHAR(50)&CHAR(54)&CHAR(46)&CHAR(67)&CHAR(79)&CHAR(77)

=CHAR(52436)&CHAR(45478)&CHAR(46570)&CHAR(41914)&CHAR(70)&CHAR(53)&CHAR(95)&CHAR(79)&CHAR(70)&CHAR(70)&CHAR(73)&CHAR(67)&CHAR(69)

Excel vba批量提取文件名+修改文件名!
首先新建一个excel文件,然后打开该excel,接着,按F12另存为xlsm格式的文件,如下图所示:打开另存的文件xlsm,然后按ALT+F11,打开宏编辑界面,如下图所示:接下来找到thisworkbook的模块,然后将如下的代码,复制粘贴到指定的模块中,如下图所示: 代码:Sub 批量获取文件名() Cells = ""...

Excel 请帮助,怎么VBA批量更改文件名
附件 VBA 递归算法 批量提取 & 修改文件名 代码如下:点击选择文件夹 按钮 选择文件夹, 在C 列输入新文件名后, 点击 重命名按钮 批量重命名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 ...

Excel 请问怎样用VBA重命名文件
1、首先我们打开一个工作样表作为例子。2、我们使用alt+f11组合快捷键进入vbe编辑器,插入一个新的模块,并在模块中输入以下代码:Sub rename() Name "<工作簿路径>\\<旧名称>.xls" As "<工作簿路径>\\<新名称>.xls"End Sub。3、我们知道在excel中保存一个文件为另一个文件时可以重新命名,save ...

老板发来一堆Excel表格要改名崩溃了
1、文件名前添加序号 在C列设置公式:=ROW(A1)&”、”&B2 然后按【重命名】按钮完成文件名批量修改。2、删除序号 添加序号后想恢复过来,把B列粘到C列,然后点一下【重命名】按钮 3、把所有文件名中的公司替换掉 按Ctrl+H打开替换窗口,把“公司”替换成空,然后点一下【重命名】按钮 由上演...

请问如何用VBA实现自动修改更新文件名称?
是可以的,在打开此文件时调用一个事件处理程序,代码写上另存表格为你需求的那个文件名就行了。如下示例未具体给定保存的文件名位置,应注意在文件名前加上自己需要的路径。

VB如何批量修改文件名?
dim s() as string d=dir("d:\\*.doc")do until d=""s=split(d,".")s(ubound(s)-1)=s(ubound(s)-1) & "B"name "d:\\" & d as "d:\\" & join(s,".")d=dir loop msgbox "批量修改文件名完毕!"

求EXCEL VBA批量修改文件名的代码示例
1、首先建立一个EXCEL表 其中第一个工作薄名称为照相顺序表 如下图 Sub 照片重命名()If MsgBox("程序将重命名与本工作薄同目录下的所有照片文件,确认这样做么?", vbYesNo) <> 6 Then Exit Sub End If Dim oldname As String '旧文件名变量oldname Dim newname As String '新文件名变量...

求帮用python写从excel提取名字,改文件夹名称的代码
既然数据在EXCEL里面,用VBA来写是顺理成章的,VBA的好处是代码在EXCEL文件里面,比较友好的开发和调试环境,可以单步一行一行的执行代码,中途可以查看变量的值,便于更正程序,我初步写了一个VBA代码,方法是把文件另存为XLAM格式(带脚本的文件),按ALT+F11进入VBA环境,按CTRL+R打开工程管理器,插入...

Excel 请帮助,怎么VBA批量更改文件名
'无须打开文档,可以更改各种类型的文件的文件名,对文件夹下所有文件更名Dim fd As FileDialogDim i As IntegerDim strfiles As String, strextfilename As String, newfilename As StringSet fd = Application.FileDialog(msoFileDialogFolderPicker)If fd.Show = -1 Then strfiles = Dir(fd.Sel...

大量excel表文件名需要改成excel文件中第一行的名字
第一步是用VBA获取全部的excel文件中第一行的汉字并过滤掉数字及字符;第二部是写个批处理,要用到DOS命令。具体是:1、在"命令提示符"(开始-程序-附件-命令提示符)中切换到excel文件所在目录,假设excel文件在D盘的excelfile文件夹,就输入cd d:\\excelfile回车;2、用dir命令获取所有excel文件并将...

相似回答