返回首页
当前位置: 主页 > Excel教程 > Excel VBA教程 >

EXCEL中VBA批量改名更轻松

时间:2015-03-19 17:28来源:Office教程学习网 www.office68.com编辑:麦田守望者

在Excel中利用VBA可以轻松快捷地对批量文件进行重新命名。

实例描述:小姚是车间的计算机管理员,他有一项工作是负责给员工照相。最近,他接到了一个任务,要求他把在E盘的照片文件夹中存放有以员工档案号命名的员工照片根据Excel工作表中的记录以队组号加姓名的方式重新命名,并且按队组分好(图1)。

1303asw-VBA批量改名图1

图1

实例分析:在实例中有1000多条记录和1000多个照片文件,那对于小姚的任务,如果我们对照工作表一个个在照片文件夹中更改,我们的工作量是可想而知的。有没有什么办法能够轻轻松松的帮助小姚完成这项任务呢?当然有,我们只需在Excel中编写几句VBA语句,就可以在几秒钟内轻松完成任务。如果你想知道,这项任务是怎么完成的,就跟我来吧!

编写VBA代码

这个过程主要是在Excel中编写VBA代码,通过代码判断照片是否存在,如果存在则用Name命令对照片文件进行重命名。

首先,打开Excel 2003,点击“工具→宏→Visual Basic编辑器”菜单,这时就会弹出Microsoft Visual Basic程序窗口,也就是VBA的编辑器。在VBA编辑器窗口中选择“插入→模块”菜单,这时在右侧可以看到空白的代码编辑区域,我们可以尝试着输入图中代码(图2)。(下载地址:http://iask.sina.com.cn/u/ish?uid=1704202287)

1303asw-VBA批量改名图2

图2

在上述代码中,只用了一个过程“照片重命名”。在这个过程中,首先用Dim命令定义了oldname、newname、photopath、nophoto、i这5个变量,分别用于临时存放旧文件名、新文件名、照片文件夹、错误提示及循环变量。图中方框①处的作用是调出文件夹选择窗口,并把选择的文件夹赋给变量photopath。接下来,利用MsgBox函数进行了人性化的人机交流,询问是否对文件进行重命名,如果是程序继续执行,否则退出过程。图中方框②处利用FOR…NEXT循环语句来读取工作表中的每条记录,Worksheets("照相顺序表").Range("a65536").End(xlUp).Row表示从A65536这个单元格向上的非空单元格,即工作表中所使用的总行数;.Range("a" & i)表示单元格中的值。代码中用newname变量取得单元格的值,即新文件名,用oldname变量取得C列单元格的值,即旧文件名,然后用Dir函数进行判断是否存在以旧文件名命名的文件,如果存在则用Name命令进行重新命名,如果不存在则把错误信息给变量nophoto,最后用MsgBox函数显示错误信息。

为按钮添加事件

为了操作方便我们可把上面我们编写的过程放到一个按钮上。首先,我们在Excel中选择“视图→工具栏→窗体”菜单,在“窗体”工具栏上点击“按钮”,按住鼠标左键根据需要拖出一个按钮。在弹出的“指定宏”的窗口中,我们选择过程“照片重命名”,点击确定后退出。最后,在按钮的标签处单击,修改按钮的标签,如更改为“文件重命名”(图3)。

1303asw-VBA批量改名图3

图3

激活VBA代码

要想使这些事件即VBA代码起作用,我们需要调整宏的安全性。选择“工具→宏→安全性”,把宏的安全性设置为“低”,这样你才能顺利的运行VBA代码。点击“文件重命名”按钮,就会发现“照片”文件夹中的文件名字已改成了队组编号加姓名的方式了(图4)。

1303asw-VBA批量改名图4

图4

对照片文件夹中的文件重新命名之后,我们可以在文件夹中右击,选择“排列图标→名称”菜单,将文件按照名称重新排列,这时就会把同一个队组的文件放到一起了,我们可以把它们移动到相应的队组文件夹中,就相应地完成了按队组分类。

------分隔线----------------------------
标签(Tag):excel excel2007 excel2010 excel2013 excel2003 excel技巧 excel教程 excel实例教程
------分隔线----------------------------
推荐内容
猜你感兴趣