VBA学习(14):给1000个文件重命名

news2024/12/24 8:48:40

如下图所示,一个文件夹内包含了大量文件,现在需要在每个文件前面增加前缀"星光牌-"


为了使代码更具有通用性,更方便大家使用,我们还是采用两步走的方式。

首先,使用以下代码,将该文件夹内的文件名批量提取到当前活动工作表的A列。


Sub GetlWbNames()
    Dim strPath As String, strName As String
    Dim k As Long
    strPath = getStrPath() '获取用户选中文件夹的路径
    If strPath = "" Then Exit Sub '如果用户为选择文件夹,则退出程序
    Application.ScreenUpdating = False
    With ActiveSheet.Columns(1)
        .Clear '清空A列
        .NumberFormat = "@" '设置文本格式
    End With
    k = 1
    Cells(k, 1) = "目录"
    strName = Dir(strPath & "*.*")
    Do While strName <> ""
        k = k + 1 '计数器
        Cells(k, 1) = strName
        strName = Dir() '第2次调用dir函数但未带参数
    Loop
    Application.ScreenUpdating = True
    MsgBox "OK"
End Sub
Function getStrPath() As String
    Dim strPath As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            strPath = .SelectedItems(1)
        Else '如用户未选中文件夹则退出
            Exit Function
        End If
    End With
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    getStrPath = strPath
End Function

然后,在B列使用函数公式或其它方式,填写A列文件名对应的新名字。本例中B2单元格输入以下公式,并向下复制填充:

="星光牌-"&A2

公式运算结果如下图所示:

最后,复制运行以下代码即可将A列旧的文件名修改为新的文件名。


Sub ChangeNames()
    Dim rngData As Range, aData, aRes
    Dim i As Long, n As Long, strPath As String
    Dim strOldName As String, strNewName As String
    Dim strMsg As String
    On Error Resume Next '忽略错误使程序继续运行
    strPath = getStrPath() '获取文件夹路径
    If strPath = "" Then Exit Sub
    Set rngData = Range("a1:b" & Cells(Rows.Count, 1).End(xlUp).Row)
    aData = rngData '数据存入数组
    ReDim aRes(1 To UBound(aData), 1 To 1) '结果数组
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For i = 2 To UBound(aData) '扣掉标题行遍历数组
        If aData(i, 2) <> "" Then
            Err.Clear
            strOldName = strPath & aData(i, 1) '旧路径名
            strNewName = strPath & aData(i, 2) '新路径名
            Name strOldName As strNewName '重命名
            If Err.Number Then
                aRes(i, 1) = "失败"
                n = n + 1
            Else
                aRes(i, 1) = "成功"
            End If
        End If
    Next
    Columns(3).ClearContents
    aRes(1, 1) = "处理结果"
    Range("c1").Resize(UBound(aRes, 1)) = aRes '处理结果写回Excel
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    strMsg = "处理完成。"
    If n Then strMsg = strMsg & vbCrLf & _
                "有" & n & "个文件重命名失败," & _
                "需核对新文件名是否有重复。"
    MsgBox strMsg
End Sub

Function getStrPath() As String
    Dim strPath As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            strPath = .SelectedItems(1)
        Else '如用户为选中文件夹则退出
            Exit Function
        End If
    End With
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    getStrPath = strPath
End Function

第7至第8行代码调用getStrPath函数过程,打开【文件浏览】对话框,允许用户选择的目标文件夹,并获取相关文件的路径。

第9至第10行代码将A:B列的数据源数据存入数组aData。

第11行代码声明一个结果数组aRes,用于存放处理结果信息。

第14至第27行代码遍历数据源数组,把第1列的旧文件名重命名为第2列的新文件名。第20至第25行代码,采用试错法,将处理结果信息写入结果数组。

第28至第30行代码将结果数组写回当前工作表的C列。

第33至第37行代码使用MsgBox语句弹出消息框显示处理结果。

第40至第51行代码是getStrPath函数过程。

技术交流,软件开发,欢迎加微信xwlink1996 


作者其他作品:

VBA实战(Excel)(1):提升运行速度

Ribbon第一节:控件大全

HTML实战(1):新建一个HTML

VB.net实战(VSTO):Excel插件的安装与卸载

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1842310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构:3.3.4遍历应用例子

应用例子一&#xff1a; 改一下先序遍历的程序 例子二&#xff1a;求二叉树的高度 怎么求&#xff1f;树是递归定义的&#xff0c;所以思考求二叉树高度能不能用递归做。 二叉树的高度和左右高度有什么关系&#xff1f;二叉树的高度等于左右子树的最大高度加上一 求树高的前…

废品回收小程序的优势?有什么开发功能?

随着环保意识的增强&#xff0c;废品回收市场备受大众关注。我国是人口大国&#xff0c;回收市场拥有巨大的发展空间&#xff0c;对于商家来说&#xff0c;废品回收市场的利润空间也非常大。 在科技快速发展时代&#xff0c;为促进我国资源回收利用&#xff0c;让居民便捷回收…

开发环境安装---Visual Studio Code

开发环境安装---Visual Studio Code 1.官网下载Visual Studio Code2.安装步骤3.安装插件 1.官网下载Visual Studio Code VScode: https://code.visualstudio.com/ Visual Studio Code 简称 VSCode &#xff0c;2015 年由微软公司发布。可用于 Windows&#xff0c;macOS 和 Li…

pycharm不能安装包的解决方法

一直使用VScode写python&#xff0c;最近使用pycharm&#xff0c;但是pycharm不能安装包&#xff0c;类似这种 后面直接使用ALT F12跳转终端&#xff1a; pip install 需要添加的包 -i https://pypi.tuna.tsinghua.edu.cn/simple不报错了

如何优雅地使用 console.log 打印数组或对象

一、背景 使用 console.log 在控制台中打印数组或者对象时&#xff0c;很多时候它们的字段都是默认关闭的&#xff0c;需要手动一个个的点开&#xff0c;非常不直观且麻烦。 二、解决方案 使用 JSON.stringify() 的第三个参数 我们来看一下官方对于 JSON.stringify 的介绍 三、…

【SQL每日一练】HackerRan-Basic Join-Challenges练习

文章目录 题目题析题解1.sqlserver 题目 编写一个查询来打印 hacker _ id、 name 和每个学生创建的挑战的总数。按照挑战的总数按降序对结果进行排序。如果不止一个学生创建了相同数量的挑战&#xff0c;那么按 hacker _ id 对结果进行排序。如果不止一个学生创建了相同数量的…

NGINX_十二 nginx 地址重写 rewrite

十二 nginx 地址重写 rewrite 1 什么是Rewrite Rewrite对称URL Rewrite&#xff0c;即URL重写&#xff0c;就是把传入Web的请求重定向到其他URL的过程。URL Rewrite最常见的应用是URL伪静态化&#xff0c;是将动态页面显示为静态页面方式的一种技术。比如 http://www.123.com…

odoo 入库发票三大凭证

注意对应科目 库存计价凭证 原材料 成品 供应商账单凭证 银行账单凭证

分布式系列之限流组件

概述 在高并发场景下&#xff0c;请求量瞬间到达&#xff0c;后端服务器即使有缓存、集群主备、分库分表、容错降级等措施&#xff0c;也有可能扛不住这请求量&#xff0c;因此可考虑引入限流组件。限流的目的&#xff1a;防止恶意请求流量或流量超出系统承载。 应用场景&…

1.搭建SpringBoot项目三种方式

目录 1.使用Spring Initializr 1.1访问Spring Initializr: 1.2填写项目基本信息 1.3配置项目元数据: 1.4添加依赖: 1.5生成项目: 1.6下载项目: 1.7解压项目: 1.8导入项目到IDE: 1.9运行项目: 1.10创建控制器: 1.11访问应用 2.使用IDE&#xff08;集成开发环境&…

秒杀技术方案

参考文档&#xff1a; 面试必考&#xff1a;秒杀系统要如何设计&#xff1f;

gorm 一对多

type Author struct {AID int gorm:"primary_key;AUTO_INCREMENT"Name stringAge stringSex string//关联关系Article []Article gorm:"ForeignKey:Auid;AssociationForeignKey:AID" } type Article struct {ArId int gorm:"primary_key;AUTO_I…

MySQL Server和Server启动程序(二)

mysql.server — MySQL Server启动脚本 Unix和类Unix系统上的MySQL发行版包括一个名为MySQL.server的脚本&#xff0c;该脚本使用mysqld_safe启动MySQL服务器。它可以在Linux和Solaris等系统上使用&#xff0c;这些系统使用System V风格的运行目录来启动和停止系统服务。它也被…

基础算法---滑动窗口

文章目录 什么是滑动窗口1.长度最小的子数组2.无重复字符的最长子串3.最大连续1的个数4.将x减到0的最小操作数5.最小覆盖子串总结 什么是滑动窗口 滑动窗口&#xff08;Sliding Window&#xff09;是一种在计算机科学中用于解决各种子数组或子字符串问题的技术。滑动窗口技术通…

如何建立私域流量?私域流量怎么运营,一文读懂

当全网都在讨论私域流量&#xff0c;你是不是也有很多问号呢&#xff1f; 互联网高速发达&#xff0c;消费形式日新月异&#xff0c;跟不上时代就会被时代淘汰&#xff0c;接下来&#xff0c;我们就从3个层面深度讨论下私域流量究竟是什么&#xff1f;为什么要玩转私域流量&am…

详细解析Ubuntu22 部署Kaldi大模型

一、下载Kaldi模型 下载地址&#xff1a;GitHub - kaldi-asr/kaldi: kaldi-asr/kaldi is the official location of the Kaldi project. 下载文件解释&#xff1a; 一般常用的是src、tools和egs包 src&#xff08;源代码&#xff09;包&#xff1a; 包含Kaldi的核心源代码&…

Flutter调用本地web

前言: 在目前Flutter 环境中&#xff0c;使用在线 webview 是一种很常见的行为 而在 app 环境中&#xff0c;离线使用则更有必要 1.环境准备 将依赖导入 2.引入前端代码 前端代码有两种情况 一种是使用打包工具 build 而来的前端代码 另一种情况是直接使用 HTML 文件 …

Quantlab整合Alpha158因子集,为机器学习大类资产配置策略做准备(代码+数据)

原创文章第565篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 我们的研报得现工作&#xff0c;用了两篇文章讲数据准备&#xff1a; 【研报复现】年化16.19%&#xff0c;人工智能多因子大类资产配置策略 【研报复现】年化27.1%&#xff0c;人…

vmware workstation下centos7屏幕切换及大小调整

虚拟机版本&#xff1a;vmware workstation15.5.2 操作系统版本&#xff1a;centos 7.9.2009 一 图形界面和命令行界面切换方法 在CentOS 7中&#xff0c;可以使用以下方法切换界面&#xff1a; 1 使用快捷键切换&#xff1a;按下Ctrl Alt F2&#xff08;或F3&#xff0…

0.5 逐行扫描(Progressive scan)简介

0.5 逐行扫描简介 逐行扫描&#xff08;Progressive scan&#xff09;是一种将图像显示在扫描式的显示设备上的方法。 逐行扫描常被用在计算机显示器上。 逐行扫描按照从左到右&#xff0c;从上到下的顺序扫描图像的所有行。如下图&#xff1a; 下图粗略的将逐行扫描与隔行…