• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のファイルよりシートの検索を行うには)

複数のファイルからシートを検索する方法

このQ&Aのポイント
  • VBAを使用して、複数のファイルから特定のシートを検索して値をコピーする方法について教えてください。
  • 現在、1つのファイルのみを選択して、指定したコード名のシートをコピーすることはできますが、複数のファイルを開いた場合にどのようにVBAを記述すればいいかわかりません。
  • 会社の案件管理のために、将来的に対象部署が増えることを考慮し、絶対に重複しない案件コードで対象ファイルを選択して情報をコピーする方法を検討しています。VBAを使用して実現する方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.2

ごめんなさい。昨日より不調のmatsu_junです。以下のように訂正します。 For i# = 1 To Workbooks.Count For j# = 1 To Workbooks(i).Worksheets.Count If Workbooks(i).Worksheets(j).Name = Sh_Name Then GoTo NEXTSTEP Next j Next i NEXTSTEP: Workbooks(i).Worksheets(j) が目的のシートです。

nabeo1
質問者

お礼

ありがとうございます。 おかげで、問題が解決致しました。 ただ、また別用件が生じてしまいましたが、 当初課題でありました当問題は解消できました。

その他の回答 (2)

noname#240783
noname#240783
回答No.3

下記のコードで参考になりませんか。 Cドライブのtestというフォルダがあり、その中に 複数のExcelファイル(.xls)があるという前提で。 Dirメソッドでファイル名を取得して、それを開いて For Eachでbook内のシートを全部なめて表示し、bookを閉じ、 次のExcelファイルを探して上記の動作を繰り返す、というものです。 book内のシートを全部舐めるところで、 目的のシート名と照合させればいいんじゃないでしょうか。 Private Sub CommandButton1_Click() Dim i As Integer Dim target As String Dim ws As Worksheet i = 1 target = Dir("C:\test\*.xls") If target = "" Then Exit Sub End If Cells(i, 1).Value = target Workbooks.Open target For Each ws In Workbooks(target).Worksheets Cells(i, 2).Value = ws.Name i = i + 1 Next ws Workbooks(target).Close Do target = Dir() If target = "" Then Exit Do Else Cells(i, 1).Value = target Workbooks.Open target For Each ws In Workbooks(target).Worksheets Cells(i, 2).Value = ws.Name i = i + 1 Next ws Workbooks(target).Close End If Loop End Sub

nabeo1
質問者

お礼

ありがとうございます。 当初課題でありました、当問題は解消致しました。

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.1

検索したいシート名を、変数 Sh_Name ( As String ) に格納するとします。その上で、以下の記述を行ってください。 For Each wb In Workbooks For Each sh In Worksheets If sh.Name = Sh_Name Then GoTo NEXTSTEP Next sh Next wb NEXTSTEP: オブジェクト変数「wb」に目的のシートを含むブックが、同じくオブジェクト変数「sh」に目的のシートがセットされます。 試しにその下の行に MsgBox wb.Name MsgBox sh.Name と記述して実行してください。検索したいシートを含むブックの名前がメッセージボックスに表示されます。OKをクリックすると次に検索されたシート名がメッセージボックスに表示されます。例えば sh.Cells(1, 1).Value とすれば、検索したシートのセルA1の値が取得できたりします。

関連するQ&A