先看下在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實現重命名、拷貝文件夾的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答
圖片精選