在VB中遍历文件并用正则表达式完成复制及vb实现重命名、拷贝文件夹的方法
前端  /  管理员 发布于 7年前   555
先看下在VB中遍历文件并用正则表达式完成复制功能
将"E:\my\汇报\成绩"路径下源文件中的“1项目”,“一项目”等文件复制到目标文件下。以下为实现方式。
Private Sub Option1_Click()Dim myStr As String'通过在单元格中输入项目序号,目前采用的InputBox方式指定的,也可通过此方式。二者取其一。'myStr = Sheets(“Sheet1”).Range(“D21”).Text ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '通过InputBox输入项目序号Start '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' myStr = InputBox("请输入项目序号,序号要为阿拉伯数字。格式一定要正确!格式如" & Chr(34) & "2项目" & Chr(34)) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '通过InputBox输入项目序号End ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim endNum As Integer 'MID函数截取结束位数 endNum = InStrRev(myStr, "项") myStr = Mid(myStr, 1, endNum - 1) 'MsgBox myStr Dim CChinesStr As String CChineseStr = CChinese(myStr) '将阿拉伯数字转为汉字 'MsgBox CChineseStr ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '遍历路径下的文件Start ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim fso As Object Dim folder As Object Dim subfolder As Object Dim file As Object Dim fileNameArray As String Dim basePath As String basePath = "E:\my\汇报\成绩" Set fso = CreateObject("scripting.filesystemobject") '创建FSO对象 Set folder = fso.getfolder(basePath & "\源文件") For Each file In folder.Files '遍历根文件夹下的文件 'fileNameArray = fileNameArray & file & "|" Dim mRegExp As Object '正则表达式对象 Dim mMatches As Object '匹配字符串集合对象 Dim mMatch As Object '匹配字符串 Set mRegExp = CreateObject("Vbscript.Regexp") With mRegExp .Global = True 'True表示匹配所有, False表示仅匹配第一个符合项 .IgnoreCase = True 'True表示不区分大小写, False表示区分大小写 '.Pattern = "([0-9])?[.]([0-9])+|([0-9])+" '匹配字符模式 '.Pattern = "((([0-9]+)?)|(([一二三四五六七八九十]+)?))项目(([一二三四五六七八九十]+)?)|([0-9])?" '匹配字符模式 '.Pattern = "(项目(二百三十四)+)|(((234)?|(二百三十四)?)项目(234)?)" '匹配字符模式 '.Pattern = "(((" & "+)?)|(([一二三四五六七八九十]+)?))项目(([一二三四五六七八九十]+)?)|([0-9])?" '匹配字符模式 .Pattern = "(项目(" & CChineseStr & ")+)|(((" & myStr & ")?|(" & CChineseStr & ")?)项目(" & myStr & ")?)" '匹配字符模式 'Set mMatches = .Execute(Sheets("上报").Range("D21").Text) '执行正则查找,返回所有匹配结果的集合,若未找到,则为空 Set mMatches = .Execute(file) '执行正则查找,返回所有匹配结果的集合,若未找到,则为空 For Each mMatch In mMatches 'SumValueInText = SumValueInText + CDbl(mMatch.Value) 'SumValueInText = SumValueInText & mMatch.Value If mMatch.Value <> "" Then 'fileNameArray = fileNameArray & mMatch.Value & "_" fso.copyfile basePath & "\源文件\" & mMatch.Value & ".*", basePath & "\目标文件" & myStr '复制操作 End If Next End With 'MsgBox fileNameArray Set mRegExp = Nothing Set mMatches = Nothing Next Set fso = Nothing Set folder = Nothing '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '遍历路径下的文件End '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' MsgBox "操作完成"End Sub'将阿拉伯数字转为汉字Private Function CChinese(StrEng As String) As String'验证数据If Not IsNumeric(StrEng) ThenIf Trim(StrEng) <> “” Then MsgBox “无效的数字”CChinese = “”Exit FunctionEnd If'定义变量Dim intLen As Integer, intCounter As IntegerDim strCh As String, strTempCh As StringDim strSeqCh1 As String, strSeqCh2 As StringDim strEng2Ch As String'strEng2Ch = “零壹贰叁肆伍陆柒捌玖”strEng2Ch = “零一二三四五六七八九十”'strSeqCh1 = " 拾佰仟 拾佰仟 拾佰仟 拾佰仟"strSeqCh1 = " 十百千 十百千 十百千 十百千"strSeqCh2 = " 万亿兆"'转换为表示数值的字符串StrEng = CStr(CDec(StrEng))'记录数字的长度intLen = Len(StrEng)'转换为汉字For intCounter = 1 To intLen'返回数字对应的汉字strTempCh = Mid(strEng2Ch, Mid(StrEng, intCounter, 1) + 1, 1)'若某位是零If strTempCh = “零” And intLen <> 1 Then'若后一个也是零,或零出现在倒数第1、5、9、13等位,则不显示汉字“零”If Mid(StrEng, intCounter + 1, 1) = “0” Or (intLen - intCounter + 1) Mod 4 = 1 Then strTempCh = “”ElsestrTempCh = strTempCh & Trim(Mid(strSeqCh1, intLen - intCounter + 1, 1))End If'对于出现在倒数第1、5、9、13等位的数字If (intLen - intCounter + 1) Mod 4 = 1 Then'添加位" 万亿兆"strTempCh = strTempCh & Trim(Mid(strSeqCh2, (intLen - intCounter) \ 4 + 1, 1))End If'组成汉字表达式strCh = strCh & Trim(strTempCh)NextCChinese = strChEnd Function
补充:下面看下用VB实现重命名、拷贝文件夹及文件
Private Sub commandButton1_Click()'声明文件夹名和路径Dim FileName, Path As String, EmptySheet As String'Path = “D:\上报”Path = InputBox(“请输入” & Chr(34) & “成绩” & Chr(34) & “文件夹的路径,格式如” & Chr(34) & “D:\成绩” & Chr(34))FileName = Path & “\上学期”EmptySheet = Path & “\学期初始化”'MsgBox FileNameIf Dir(FileName, vbDirectory) <> “” Then'MsgBox “文件夹存在”'获取系统当前时间'Dim dd As Date'dd = Now'MsgBox Format(dd, “yyyymm”)Dim myTime As StringmyTime = InputBox(“请输入当前时间,格式如” & Chr(34) & “201811” & Chr(34))If myTime = “” ThenMsgBox “当前时间不能为空!否则不能重命名当期文件夹”Else:Name FileName As Path & “” & myTimeEnd IfEnd If'判断文件夹是否存在If Dir(FileName, vbDirectory) = “” Then'创建文件夹MkDir (FileName)'MsgBox (“创建完毕”)Else: MsgBox (“文件夹已在”)End If'复制空表到当期Set Fso = CreateObject(“Scripting.FileSystemObject”)'拷贝文件夹Fso.copyfolder EmptySheet, FileName'Fso.copyfile EmptySheet&“c:*.*”, “d:” '拷贝文件'FileSystemObject.copyfolder EmptySheet, FileName, 1MsgBox (“操作成功!”)End Sub
总结
以上所述是小编给大家介绍的在VB中遍历文件并用正则表达式完成复制及vb实现重命名、拷贝文件夹的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号