求EXCEL VBA批量修改文件名的代码示例

如题,那位前辈有现成代码请提供给我参考下,谢谢!

办公室有个批量更改照片的 占个位置 明天上班再贴 半夜懒重写了。

目标:为学员照相 导入电脑并批量修改为学号加姓名

1、首先建立一个EXCEL表 其中第一个工作薄名称为照相顺序表 如下图

Sub 照片重命名()

If MsgBox("程序将重命名与本工作薄同目录下的所有照片文件,确认这样做么?", vbYesNo) <> 6 Then

Exit Sub

End If

Dim oldname As String '旧文件名变量oldname

Dim newname As String '新文件名变量newname

Dim photopath As String '路径变量photopath

Dim nophoto As String '错误提示变量nophoto

Dim i As Integer '循环变量i

photopath = ThisWorkbook.Path '为要修改的文件名路径复制为当前excel文件的路径

For i = 2 To Worksheets("照相顺序表").Range("a65536").End(xlUp).Row '开始循环 从“照相顺序表”工作薄的a2单元格开始

'为新文件名变量赋值为路径变量& \ & 照相顺序表工作薄中的a2&b2单元格内容加上扩展名.jpg

newname = photopath & "\" & Worksheets("照相顺序表").Cells(i, 1).Text & Worksheets("照相顺序表").Cells(i, 2).Text & ".jpg"

'为旧文件名变量赋值为路径变量& \ & 照相顺序表工作薄中的c2单元格内容&扩展名.jpg

oldname = photopath & "\" & Worksheets("照相顺序表").Cells(i, 3).Text & ".jpg"

'判断旧文件名是否在当前目录存在

If Dir(oldname) <> "" Then

Name oldname As newname '存在则改名

Else

nophoto = nophoto & Chr(10) & oldname‘不存在则将其赋值给错误提示变量并以回车分割累加

End If

Next i

If nophoto <> "" Then

MsgBox nophoto & Chr(10) & "图片不存在" ’存在错误提示则弹出错误提示框

End If

End Sub 

备注是刚添加的 希望有所帮助,另外求分谢谢。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-17
你看看这个,可以直接用的
Sub 批量更名()
Dim mypath$, myfile$, newname$, firstname$, rn As Range, t As Boolean
On Error Resume Next
mypath = InputBox("请输入更名文件的文件夹", "输入路径", "C:\文件夹1")
myfile = Dir(mypath & "\" & "*.jpg")
Set rn = Range("C1:C" & [C65536].End(xlUp).Row)
Do While myfile <> "" And firstname <> myfile '电脑写磁盘的动作远比程序运行速度慢所以多加了一个条件能避免改过名的文件再次被更名
Set c = rn.Find(Split(myfile, ".")(0), lookat:=xlWhole)
If Not c Is Nothing Then
oldname = mypath & "\" & myfile
newname = c.Offset(0, -2).Value & c.Offset(0, -1).Value & ".jpg"
Name mypath & "\" & myfile As mypath & "\" & newname
If t = False Then firstname = newname: t = True
End If
myfile = Dir
Loop
End Sub
第2个回答  2011-11-10
你要修改什么格式的文件??

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

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

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...

VBA快速修改多个Excel的内容
Sub MultiModi()Dim wb As WorkbookDim ws As WorksheetDim fnfn = Dir("盘符:\\文件所在的完整路径名\\*.xls") '取得第一个工作簿的文件名(如果是2007版,则后缀名请改为 *.xlsx)Do While fn <> "" Set wb = Workbooks.Open(fn) '打开工作簿 For Each ws In wb.Worksheets '循...

EXCEL批量修改工作表名称 VBA
VBA代码如下:Sub 宏1() For Each r In Sheet1.Range("B2:B100").Cells With ThisWorkBook.Sheets.Add .Name = r.Value .Cells(1,1) = r.Value End With Next rEnd Sub'如果执行中遇到问题请拷屏追问,如需代劳请百度云联系。

如何批量修改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...

如何批量修改多个excel文件内容?
在 Excel 中打开 VBA 编辑器。你可以通过按下 Alt + F11 快捷键来打开它。在 VBA 编辑器中,选择 "插入" 菜单,然后选择 "模块"。在新创建的模块中,复制并粘贴以下代码:vba复制代码 Sub批量修改Excel文件()Dim MyFolder As String Dim MyFile As String Dim MyWorkbook As Workbook ' 设置...

Excel如何批量修改工作表名称?
Excel批量修改工作表名称,方法如下:第一步:建议对原工作簿做一个备份。另外,如果工作簿中工作表之间存在公式引用,就不要做批量修改工作表名。第二步:在VBA编辑器中插入新模块,把下面的代码复制到模块中。第三步:按F5运行一下,就完成对所有工作表名称的批量修改了。代码如下:SUB BatchName...

如何批量更改excel中的文件名
VBA代码是:Sub sort_sheet()Dim xxx(1 To 268)Dim sht As Worksheet For Each sht In Worksheets v = Val(sht.Name)If v > 0 Then xxx(v) = sht.Name End If Next For Each xx In xxx If IsEmpty(xx) = False Then n = n + 1 Sheets(xx).Move before:=Sheets(n)If n + 1...

相似回答