网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月20日漏签0天
vba吧 关注:17,055贴子:66,697
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 4回复贴,共1页
<<返回vba吧
>0< 加载中...

求助求助:各位大佬,请问一下如何根据文档内容修改文件名呢

  • 只看楼主
  • 收藏

  • 回复
  • cuiyan1029
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
具体情况:电脑里有很多文档,其中一些文档内有特殊标记,例如包含某一地名,那我需要将此文档命名为“地名-文件名”的格式。据此,我分别向文心一言和讯飞心火提问如下:
“如何批量找出含安徽或者安 徽或者安 徽或者山东或者山 东或者山 东或者陕西或者陕 西或者陕 西的word文档,如果文档内安徽或者安 徽或者安 徽,则将安徽-加到文档名的开头,如果文档内含有山东或者山 东或者山 东,则将山东-加到文档名的开头,,如果文档内含有含西或者陕 西或者陕 西,则将陕西-加到文档名的开头,需要遍历所有子文件夹,用vba实现”,两者所答均不能实现目的,请各位大佬指导一下


  • cuiyan1029
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
图一为文心一言,图二为讯飞心火



2025-07-20 20:12:39
广告
  • lll999jjk
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你这个只是遍历单层文件(一级),无法遍历多层级。如果想遍历所有层级,参考如下。有没有人共享自定义函数___类___等的? 第12楼的函数,返回的就是所有层级的文件


  • RainForver
  • 四方游侠
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
'遍历文件
Sub LookUpAllFiles(fld As Folder)
Dim fs As New FileSystemObject
Dim fil As file, outFld As Folder '定义一个文件夹和文件变量
Set subfiles = fld.Files() '获取文件夹下所有文件
Set SubFolders = fld.SubFolders '获取文件夹下所有文件夹
For Each fil In fld.Files '遍历文件
'Debug.Print fil
If fs.GetExtensionName(fil) = "doc" Or fs.GetExtensionName(fil) = "docx" Then
If InStr(fil, "山东") Or InStr(fil, "山 东") Or InStr(fil, "山 东 ") Then
Name fil As Mid(fil, 1, InStrRev(fil, "\")) & "山东-" & Mid(fil, InStrRev(fil, "\") + 1, Len(fil) - InStrRev(fil, "\"))
ElseIf InStr(fil, "安徽") Or InStr(fil, "安 徽") Or InStr(fil, "安 徽 ") Then
Name fil As Mid(fil, 1, InStrRev(fil, "\")) & "安徽-" & Mid(fil, InStrRev(fil, "\") + 1, Len(fil) - InStrRev(fil, "\"))
ElseIf InStr(fil, "陕西") Or InStr(fil, "陕 西") Or InStr(fil, "陕 西 ") Then
Name fil As Mid(fil, 1, InStrRev(fil, "\")) & "陕西-" & Mid(fil, InStrRev(fil, "\") + 1, Len(fil) - InStrRev(fil, "\"))
Else
End If
End If
Next
For Each outFld In SubFolders '遍历文件夹
LookUpAllFiles outFld '调用函数自身
Next
End Sub
Sub tt()
Dim fso As New FileSystemObject
Dim fld As Folder, sr As String
On Error Resume Next
sr = "C:\Users\Administrator\Desktop\新建文件夹\"
If fso.FolderExists(sr) Then
Set fld = fso.GetFolder(sr)
LookUpAllFiles fld
Else
Debug.Print "文件不存在"
End If
Debug.Print "Finish!"
End Sub


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 4回复贴,共1页
<<返回vba吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示