먼저 VB에서 파일을 탐색하고 정규식을 사용하여 복사 기능을 완성하는 방법을 살펴보겠습니다.
소스 파일의 "E:/my/Report/Achievements" 경로에 있는 "Project 1", "Project 1" 및 기타 파일을 대상 파일에 복사합니다. 수행 방법은 다음과 같습니다.
Private Sub Option1_Click()Dim myStr As String' 셀에 품목 일련번호를 입력하면 현재 사용하는 InputBox 방식으로 지정되며, 이 방식도 사용할 수 있습니다. 둘 중 하나를 선택하십시오. 'myStr = Sheets("Sheet1").Range("D21").Text ''''''''''''''''''''''''' '''' '''''''''''''''''''' 'InputBox 시작을 통해 프로젝트 일련 번호를 입력하세요. '''''''''''' ''''' '''''''''''''''''''''''''''''''''' '' myStr = InputBox("프로젝트 일련번호를 입력하세요. 일련번호는 아라비아 숫자여야 합니다. 형식이 정확해야 합니다! 형식은 " & Chr(34) & "2 항목" & Chr(34)) '''' ''''''''''''''''''''''''''''''''''''''''''''''' ' 'InputBoxEnd를 통해 프로젝트 일련번호를 입력하세요. '''''''''''''''''''''''''''''''''''''''''''''' ''''' Dim endNum As Integer 'MID 함수는 끝 숫자를 가로챕니다. endNum = InStrRev(myStr, "item") myStr = Mid(myStr, 1, endNum - 1) 'MsgBox myStr Dim CChinesStr As String C ChineseStr = C Chinese(myStr ) '아라비아 숫자를 한자로 변환'MsgBox C ChineseStr ''''''''''''''''''''''''''''' '''''''' ''''''''''''''' '시작 경로 아래의 파일을 탐색합니다. '''''''''''''''''' '''''''' ''''''''''''''''''''''''' Dim fso As Object Dim 폴더 As Object Dim 하위 폴더 As Object Dim 파일 As Object Dim fileNameArray As String Dim basePath As String basePath = "E:/my/report/achievements" Set fso = CreateObject("scripting.filesystemobject") 'FSO 객체 생성 Set 폴더 = fso.getfolder(basePath & "/source file") 폴더의 각 파일에 대해.Files '루트 폴더 아래의 파일 트래버스' fileNameArray = fileNameArray & file & "|" Dim mRegExp As Object '정규 표현식 객체 Dim mMatches As Object '일치 문자열 컬렉션 객체 Dim mMatch As Object 'Match string Set mRegExp = CreateObject("Vbscript.Regexp") With mRegExp .Global = True 'True는 모두 일치하는 것을 의미하고 False는 첫 번째 일치만 일치하는 것을 의미합니다. item.IgnoreCase = True 'True는 대소문자를 구분하지 않음을 의미하고, False는 대소문자를 구분함을 의미합니다.'.Pattern = "([0-9])?[.]([0-9])+|([0-9])+" '문자 패턴 일치'.Pattern = "((([0-9]+)? )|(([一이삼사오六七八九十]+)?)) item(([一이삼사오六七八九十]+)?)|([0-9])?" '문자 패턴 일치'.Pattern = "(Item(234)+)|(((234)?|(이백삼십사)?)Item(234)?)" '문자 패턴 일치'.Pattern = "(((" & "+) ?)|(([一이삼사오六七八九十]+)?)) item(([一이삼사오六七八九十]+)?)|([0-9 ])? " '문자 패턴과 일치합니다.Pattern = "(item(" & C ChineseStr & ")+)|(((" & myStr & ")?|(" & C ChineseStr & ")?)item(" & myStr & ")?)" '문자 패턴 일치'Set mMatches = .Execute(Sheets("Report").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 & "/source file/" & mMatch.Value & ".*", basePath & "/target file" & myStr 'Copy OperationEnd If Next End With 'MsgBox fileNameArray Set mRegExp = Nothing Set mMatches = Nothing Next Set fso = 없음 설정된 폴더 = 없음 ''''''''''''''''''''''''''''''' ''''''''' ''''''''' 'pathEnd '''''''''''''''''''''''''''''''''''''''' 아래의 파일을 탐색합니다. ''''''''' MsgBox "작업 완료"End Sub'아라비아 숫자를 한자로 변환Private Function C Chinese(StrEng As String) As String'Verify dataIf Not IsNumeric( StrEng) ThenIf Trim(StrEng) <> “” Then MsgBox “잘못된 번호”C Chinese = “”Exit FunctionEnd If'define 변수 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)' 특정 비트가 0인 경우 If strTempCh = "zero" And intLen <> 1 Then'If 후자도 0이거나 아래쪽에서 1번째, 5번째, 9번째, 13번째 등의 위치에 0이 나타나면 Mid(StrEng, intCounter + 1, 1)이면 한자 "zero"가 표시되지 않습니다. = “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 그런 다음 '비트 "조" strTempCh = strTempCh & Trim(Mid(strSeqCh2, (intLen - intCounter) / 4 + 1, 1))End If'를 추가하여 중국어 표현 strCh = strCh & Trim(strTempCh)NextC Chinese = strChEnd를 형성합니다. 기능
보충: VB를 사용하여 폴더와 파일의 이름을 바꾸고 복사하는 방법을 살펴보겠습니다.
Private Sub commandButton1_Click()'폴더 이름 및 경로 선언 Dim FileName, Path As String, EmptySheet As String'Path = "D:/Report" Path = InputBox("입력하세요" & Chr(34) & "Grade" & Chr ( 34) & “다음 형식의 폴더 경로” & Chr(34) & “D:/grades” & Chr(34))FileName = 경로 & "/마지막 학기"EmptySheet = 경로 & "/학기 초기화"'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' 폴더 여부를 결정합니다. 존재하는 경우 Dir(파일 이름, vbDirectory) = "" Then'폴더 생성 MkDir(파일 이름)'MsgBox ("생성됨")Else: MsgBox ("폴더가 이미 있습니다.")End If'빈 테이블을 현재 Set에 복사합니다. Fso = CreateObject("Scripting.FileSystemObject")'Fso.copyfolderEmptySheet, FileName'Fso.copyfileEmptySheet&"c:* 폴더를 복사합니다. *", "d:" '파일 복사'FileSystemObject.copyfolder EmptySheet, FileName, 1MsgBox ("작업 성공!")End Sub
요약
위의 내용은 VB에서 파일을 탐색하고 정규식을 사용하여 VB에서 폴더를 복사하고 이름을 바꾸는 방법입니다. 궁금한 점이 있으면 메시지를 남겨주세요. 편집자는 제 시간에 모든 사람에게 답변을 드릴 것입니다. 또한 Wulin.com 웹사이트를 지원해 주신 모든 분들께 감사드립니다!