在VB中遍历文件并用正则表达式完成复制及vb实现重命名、拷贝文件夹的方法
先看下在VB中遍历文件并用正则表达式完成复制功能
将"E:\my\汇报\成绩"路径下源文件中的“1项目”,“一项目”等文件复制到目标文件下。以下为实现方式。
PrivateSubOption1_Click() DimmyStrAsString '通过在单元格中输入项目序号,目前采用的InputBox方式指定的,也可通过此方式。二者取其一。 'myStr=Sheets(“Sheet1”).Range(“D21”).Text ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '通过InputBox输入项目序号Start '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' myStr=InputBox("请输入项目序号,序号要为阿拉伯数字。格式一定要正确!格式如"&Chr(34)&"2项目"&Chr(34)) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '通过InputBox输入项目序号End ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' DimendNumAsInteger'MID函数截取结束位数 endNum=InStrRev(myStr,"项") myStr=Mid(myStr,1,endNum-1) 'MsgBoxmyStr DimCChinesStrAsString CChineseStr=CChinese(myStr)'将阿拉伯数字转为汉字 'MsgBoxCChineseStr ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '遍历路径下的文件Start ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' DimfsoAsObject DimfolderAsObject DimsubfolderAsObject DimfileAsObject DimfileNameArrayAsString DimbasePathAsString basePath="E:\my\汇报\成绩" Setfso=CreateObject("scripting.filesystemobject")'创建FSO对象 Setfolder=fso.getfolder(basePath&"\源文件") ForEachfileInfolder.Files'遍历根文件夹下的文件 'fileNameArray=fileNameArray&file&"|" DimmRegExpAsObject'正则表达式对象 DimmMatchesAsObject'匹配字符串集合对象 DimmMatchAsObject'匹配字符串 SetmRegExp=CreateObject("Vbscript.Regexp") WithmRegExp .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&")?)"'匹配字符模式 'SetmMatches=.Execute(Sheets("上报").Range("D21").Text)'执行正则查找,返回所有匹配结果的集合,若未找到,则为空 SetmMatches=.Execute(file)'执行正则查找,返回所有匹配结果的集合,若未找到,则为空 ForEachmMatchInmMatches 'SumValueInText=SumValueInText+CDbl(mMatch.Value) 'SumValueInText=SumValueInText&mMatch.Value IfmMatch.Value<>""Then 'fileNameArray=fileNameArray&mMatch.Value&"_" fso.copyfilebasePath&"\源文件\"&mMatch.Value&".*",basePath&"\目标文件"&myStr'复制操作 EndIf Next EndWith 'MsgBoxfileNameArray SetmRegExp=Nothing SetmMatches=Nothing Next Setfso=Nothing Setfolder=Nothing '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '遍历路径下的文件End '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' MsgBox"操作完成" EndSub '将阿拉伯数字转为汉字 PrivateFunctionCChinese(StrEngAsString)AsString '验证数据 IfNotIsNumeric(StrEng)Then IfTrim(StrEng)<>“”ThenMsgBox“无效的数字” CChinese=“” ExitFunction EndIf '定义变量 DimintLenAsInteger,intCounterAsInteger DimstrChAsString,strTempChAsString DimstrSeqCh1AsString,strSeqCh2AsString DimstrEng2ChAsString 'strEng2Ch=“零壹贰叁肆伍陆柒捌玖” strEng2Ch=“零一二三四五六七八九十” 'strSeqCh1="拾佰仟拾佰仟拾佰仟拾佰仟" strSeqCh1="十百千十百千十百千十百千" strSeqCh2="万亿兆" '转换为表示数值的字符串 StrEng=CStr(CDec(StrEng)) '记录数字的长度 intLen=Len(StrEng) '转换为汉字 ForintCounter=1TointLen '返回数字对应的汉字 strTempCh=Mid(strEng2Ch,Mid(StrEng,intCounter,1)+1,1) '若某位是零 IfstrTempCh=“零”AndintLen<>1Then '若后一个也是零,或零出现在倒数第1、5、9、13等位,则不显示汉字“零” IfMid(StrEng,intCounter+1,1)=“0”Or(intLen-intCounter+1)Mod4=1ThenstrTempCh=“” Else strTempCh=strTempCh&Trim(Mid(strSeqCh1,intLen-intCounter+1,1)) EndIf '对于出现在倒数第1、5、9、13等位的数字 If(intLen-intCounter+1)Mod4=1Then '添加位"万亿兆" strTempCh=strTempCh&Trim(Mid(strSeqCh2,(intLen-intCounter)\4+1,1)) EndIf '组成汉字表达式 strCh=strCh&Trim(strTempCh) Next CChinese=strCh EndFunction
补充:下面看下用VB实现重命名、拷贝文件夹及文件
PrivateSubcommandButton1_Click() '声明文件夹名和路径 DimFileName,PathAsString,EmptySheetAsString 'Path=“D:\上报” Path=InputBox(“请输入”&Chr(34)&“成绩”&Chr(34)&“文件夹的路径,格式如”&Chr(34)&“D:\成绩”&Chr(34)) FileName=Path&“\上学期” EmptySheet=Path&“\学期初始化” 'MsgBoxFileName IfDir(FileName,vbDirectory)<>“”Then 'MsgBox“文件夹存在” '获取系统当前时间 'DimddAsDate 'dd=Now 'MsgBoxFormat(dd,“yyyymm”) DimmyTimeAsString myTime=InputBox(“请输入当前时间,格式如”&Chr(34)&“201811”&Chr(34)) IfmyTime=“”Then MsgBox“当前时间不能为空!否则不能重命名当期文件夹” Else: NameFileNameAsPath&“”&myTime EndIf EndIf '判断文件夹是否存在 IfDir(FileName,vbDirectory)=“”Then '创建文件夹 MkDir(FileName) 'MsgBox(“创建完毕”) Else:MsgBox(“文件夹已在”) EndIf '复制空表到当期 SetFso=CreateObject(“Scripting.FileSystemObject”) '拷贝文件夹 Fso.copyfolderEmptySheet,FileName 'Fso.copyfileEmptySheet&“c:*.*”,“d:”'拷贝文件 'FileSystemObject.copyfolderEmptySheet,FileName,1 MsgBox(“操作成功!”) EndSub
总结
以上所述是小编给大家介绍的在VB中遍历文件并用正则表达式完成复制及vb实现重命名、拷贝文件夹的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!