まず、VB でファイルを走査し、正規表現を使用してコピー関数を完了する方法を見てみましょう。
パス「E:/my/Report/Achievements」の下にあるソース ファイル内の「Project 1」、「Project 1」およびその他のファイルをターゲット ファイルにコピーします。その方法は次のとおりです。
Private Sub Option1_Click()Dim myStr As String' セルにアイテムのシリアル番号を入力することで、現在使用しているInputBoxメソッドで指定されており、このメソッドも使用できます。 2 つのうち 1 つを選択します。 'myStr = Sheets("Sheet1").Range("D21").Text '''''''''''''''''''''''''''''' '''''''''''''''''''''''' 'InputBox からプロジェクトのシリアル番号を入力してください Start '''''''''''' '''''' '''''''''''''''''''''''''''''''''''' 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 '''''''''''''''''''''''''''''''''''' '''''''''''''' 'パス Start '''''''''''''''''' '''''''' のパスの下のファイルを走査します'''''''''''''''''''''''''''' Dim fso As Object Dim フォルダー As Object As オブジェクト 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") 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 は最初の一致のみを意味しますitem.IgnoreCase = True 'True は大文字と小文字を区別しないことを意味し、False は大文字と小文字を区別することを意味します'.Pattern = "([0-9])?[.]([0-9])+|([0-9])+" '文字パターンに一致'.Pattern = "((([0-9]+)? )|(([一二三四五六七八九十]+)?)) アイテム(([一二三四五六七八九十]+)?)|([0-9])?" '文字パターンに一致'.Pattern = "(Item(234)+)|(((234)?|(234)?)Item(234)?)" '文字パターンの一致'.Pattern = "(((" & "+) ?)|(([一二三四五六七八九十]+)?)) item(([一二三四五六七八九十]+)?)|([0-9 ])? " '文字パターンに一致します。Pattern = "(item(" & CchineseStr & ")+)|(((" & myStr & ")?|(" & CchineseStr & ")?)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。値 mMatch .Value <> "" then 'fileNameArray = fileNameArray & mMatch.Value & "_" fso.copyfilebasePath & "/source file/" & mMatch.Value & ".*",basePath & "/target file" & myStr 'コピー操作End 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'データを検証If Not IsNumeric( StrEng) thenIf Trim(StrEng) <> "" then MsgBox "無効な番号"C中国語 = ""関数終了End If' 変数 Dim intLen As Integer、intCounter As IntegerDim strCh As String、strTempCh As StringDim strSeqCh1 As String、strSeqCh2 As StringDim strEng2Ch As String'strEng2Ch = "ゼロ 1 2 3 4 5 ランド 7 7 8 9" strEng2Ch = "ゼロ 1 2 3 4 5 6 7 8 90"'strSeqCh1 = " "strSeqCh1 = "One Hundred Thousand One Hundred One Hundred Thousand One Hundred Thousand" strSeqCh2 = "Trillion"'数値を表す文字列に変換 StrEng = CStr(CDec( StrEng))'数値の長さを記録intLen = Len(StrEng )'漢字に変換する場合 intCounter = 1 にintLen'数値に対応する漢字を返します strTempCh = Mid(strEng2Ch, Mid(StrEng, intCounter, 1) + 1, 1)'特定のビットがゼロの場合If strTempCh = "zero" And intLen <> 1 then'If後者もゼロであるか、下から 1 番目、5 番目、9 番目、13 番目などにゼロがある場合、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' 最初と最後の数値の場合5、9、13 などの桁 If (intLen - intCounter + 1) Mod 4 = 1次に、ビット "Trillion" 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("Please enter" & Chr(34) & "Grade" & Chr ( 34) & “フォルダーへのパス。次の形式です。” & Chr(34) & “D:/grades” & Chr(34))FileName = Path & "/Last Semester"EmptySheet = Path & "/Semester Initialization"'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(FileName, vbDirectory) = "" then'フォルダー MkDir (FileName) を作成'MsgBox ("Created")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 でファイルを検索し、正規表現を使用してフォルダーをコピーし、名前を変更し、コピーするためにエディターによって紹介された方法です。ご質問がある場合は、メッセージを残してください。編集者は時間内に全員に返信します。また、Wulin.com ウェブサイトをサポートしてくださった皆様にも感謝いたします。