特定の名前の含まれるシートのみ処理を行いたいのですが……

前提

当方VBA初心者です。お力添えいただけませんでしょうか。

EXCELのシートとシートを比較し、相違があれば赤字にするというVBAがあるのですが、特定の名前が含まれているシートすべてに処理を行いたいと考えています。
どのような処理を足したらよいか、どのように対応したらよいかわからず、こちらに相談させていただきました。

前提

・C2セルに比較したいExcelファイルが格納されているフォルダのファイルパスが記載されています

・C3セルには、比較するために利用するCSVの格納されているフォルダのファイルパスが記載されています。

・B9:B60には、C2のセルに書かれているExcelファイル名が記載されています
(これは別のマクロで記載をおこなっています。)

行いたいことは、このB列に記載されているExcelを開くと、シートが複数入っており、『チェック』という名前の含まれたシートのU列のみ処理を行うという風にしたいと考えております。

しかし、シート名は『チェック』『チェック(1)』『チェック(2)』と複数あります

実現したいこと

このB列に記載されているExcelを開くと、シートが複数入っており、『チェック』という名前の含まれたシートのU列のみ処理を行うという風にしたいと考えております。

しかし、シート名は『チェック』『チェック(1)』『チェック(2)』と複数あります

該当のソースコード

Sub checkName() Apprlication.ScreenUpdating = False If MsgBox("チェックをおこないますか?", vbYesNo) Then Exit Sub End If Dim TargetBook As Workbook Dim CsvBook As Workbook Dim Path, CSVFileP As String Dim TargetSheetNames() As String 'C2セルに、中身を確認したいファイルのファイルパスを記載しています 'C3セルに、C2セルの中身をチェックするためのCSVファイルが入っています Path = Range("C2").Value CSVFileP = Range("C3").Value Dim buf As String 'ファイルリスト(VBAの入っている当EXCELファイル)のB9:B60には、C2のファイルパスの中に入っているファイルのファイル名が記載されています 'ファイルリストの最終行を取得 Dim FLLastRowNo FLLastRowNo = Cells(Rows.Count, 2).End(xlUp).Row Dim FileList FileList = Range("B9:C" & FLLastRowNo).Value For i = LBound(FileList, 1) To UBound(FileList, 1) Dim newFileName As String newFileName = FileList(i, 1) 'ここでは省略しますが以下の処理が記載されています '①CSVFilePを開く処理→②比較元になるA列の値を取得→③CSVファイルを閉じる 'ファイルリスト(VBAの入っている当EXCELファイル)のB9:B60が記載されており、それを開く処理だと思います↓ If Dir(Path & newFileName) <> "" Then Workbooks.Open Path & newFileName Set TargetBook = Workbooks(newFileName) Else MsgBox "ファイルがありません" & Filename, vbExclamation Exit Sub End If For Each objWorksheet In TargetBook.Worksheets If objWorksheet.Name - strseetName Then blnFileExists = True Exit For End If Next '↓↑このあたりに、シート名に関する処理を入れたいです TargetSheetNames = getsheetName(TargetBook) 'ファイルリスト(VBAの入っている当EXCELファイル)のB9:B60が記載されており、それを開いた後、最終行を取得 Dim newLastRowNo newLastRowNo = TargetBook.Sheets(TargetSheetName).Cells(Rows.Count, 4).End(xlUp).Row 'U列を確認したいので、U列を取得 Dim CheckIchranList As Variant CheckIchranList = Range("U6:U" & newLastRowNo).Value '省略しますが、U列を一行ずつチェックし、比較。CSVFilePのA列の値と比較し、相違があれば赤字にする処理が記載されています Nexti MsgBox "チェックが完了しました" Application.ScreenUpdating = True End Sub

試したこと

下記コードを見かけたので、入れれば処理ができるかと思ったのですが、どのように組み込んだらよいかわからず……

sub getSubSheetName() const Find_str ="チェック" Dim sh As Object For Each sh In Sheets If sh.Name Like Find_str & "*" Then sh.Select MsgBox sh.Name End If Next sh End sub

コメントを投稿

0 コメント