• ベストアンサー

エクセルのブック内の検索一覧

エクセル2003VBAについて教えてください。 複数のブックがあり、ブックの中にはいくつかの同じ内容のシートがあります。 シートの内容は、 A1セルには、○か×が入ります。 A2セルには、このブック名とシート名が入っています。 A3セルにはいろいろな文字列が入っています。 A1が○のブック内のシートを探して、別のブックへ |A2セルの内容|A3セルの内容| というリストを作成したいのですが、どのように組めばよいでしょうか。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>どのように組めばよいでしょうか。 QNo.4143734 のコードを組める方なら、それほど難しくないと思うのですが...? 最近似たような他の質問(QNo.4134321)に掲載したコードがありましたのでちょっと修正してみました。 新規Bookの標準モジュールに後述のコードを置いて実行します。 その複数のBookは1つのフォルダにまとめてあるものとします。 '以下標準モジュールに置く。 Option Explicit Sub try()   Dim brw As Object   Dim ws As Worksheet   Dim fd As String   Dim fn As String   Dim re As String   Dim i  As Long   Dim n  As Long   Dim v(0 To 65535, 1 To 4)   Set brw = CreateObject("Shell.Application") _        .BrowseForFolder(0, "SelectFolder", 0)   If brw Is Nothing Then Exit Sub   fd = brw.self.Path & "\"   Set brw = Nothing   If MsgBox(fd & " の処理を行います。OK?", vbOKCancel) _        = vbCancel Then Exit Sub   With Application     .ScreenUpdating = False     .EnableEvents = False     .Calculation = xlCalculationManual   End With   v(0, 1) = "BookName"   v(0, 2) = "SheetName"   v(0, 3) = "A2"   v(0, 4) = "A3"   On Error GoTo errHndlr   fn = Dir(fd & "*.xls")   Do Until Len(fn) = 0&     If Not fn Like ThisWorkbook.Name Then       With Workbooks.Open(Filename:=fd & fn, _                 Updatelinks:=False, _                 ReadOnly:=True)         i = i + 1         For Each ws In .Worksheets           If ws.Range("A1").Value = "○" Then             n = n + 1             v(n, 1) = fd & fn             v(n, 2) = ws.Name             v(n, 3) = ws.Range("A2").Value             v(n, 4) = ws.Range("A3").Value           End If         Next ws         .Close Savechanges:=False       End With     End If     fn = Dir()   Loop errHndlr:   If i > 0& Then     Sheets.Add.Range("A1").Resize(n + 1, UBound(v, 2)).Formula = v   End If   With Application     .Calculation = xlCalculationAutomatic     .EnableEvents = True     .ScreenUpdating = True   End With   If Err.Number = 0& Then     re = i & " Books & " & n & " Sheets" & vbLf & "処理終了"   Else     re = Err.Number & vbLf & Err.Description   End If   MsgBox re   Set ws = Nothing End Sub

coral_japan
質問者

お礼

すごいです!!! 希望通りのものができました。 内容については、まだ理解できておりませんが、 お答えを参考にじっくり勉強したいとおもいます。 どうもありがとうございました!

関連するQ&A

  • Excelの関数で、検索条件(複数)を満たす場合値を返す方法について質

    Excelの関数で、検索条件(複数)を満たす場合値を返す方法について質問です。 セルA2にある文字列が、別ファイルのA列にある文字列を含む場合セルB2に○を、含まない場合は×を入力する関数を教えて下さい!! --------- book1.xls シート1 A2にある文字列が、 book2.xls シート1 A列にある文字列のいずれかを含む場合、 book1.xls シート1 B2に「○」を、含まない場合は「×」を結果として反映させたいです。 ※book1.xlsのリストは全角カナ、book2.xlsのリストは半角カナ です。 ※book2.xls シート1にある検索条件は行列共に増える可能性があります。 マクロやVBAではなく関数で行うことは可能でしょうか? 勉強不足ですみません。 色々調べて試しているのですが、なかなかうまくいかないのでお力をお貸し下さい。 よろしくお願いします。

  • Excelでキーワード検索(異なるブックで)

    現在、シートのA2にキーワード欄を設けて、A5:Z5以下にあるデータ(文字列)から 該当した文字のみサイズ変更と該当セルの色づけをVBAで行っています。 キーワードが1つずつしか検索出来ないことと、A5以下のデータ(文字列)を 別のブックから都度貼り付けることに不便を感じております。 そこでご質問ですが キーワードとデータを異なるブックで用意し、キーワード側のVBAでデータファイルを 検索し、文字サイズとセルの色づけを実施するのはVBAで可能でしょうか。 (キーワードは複数有り、増減します。) 尚、VBAは入門レベルです。 宜しくお願い致します。

  • EXCELの複数シートをそれぞれ別ブックへ保存したい

    EXCEL97を使用しています。 1つのブック内に複数のシート(10~20枚)があります。 これを全て1シートずつの別のブックに分けて保存をするマクロを作成したいのですが、できますでしょうか? できれば各シート内の(A4)に入力されている文字列を各ブックの名前として使用したいのですが・・・。 (各シートのセルA4の値に重複はありません) 現在は各シートを新しいブックにコピーして名前を付けて保存、の作業をシート数分繰り返しています。 すみませんがよろしくお願いいたします。

  • Excel VBA 複数のブックから新しいブックでひとつの表に集計

       A B 1   45 2   62 82 3   51 . . 複数のExcelファイルに上記のような表があります。「B列に数値が入力されており、なおかつA列に数値が未入力のセル」を、1個とカウントし、新しいブックでファイル名別に項目をつくり、表を作成したい考えています。↓ ファイルその(1)  4 ファイルその(2)  6 ファイルその(3)  0 VBA等で集計する方法はあるでしょうか。よろしくお願いいたします。

  • エクセルでフォルダ内のBookのセルの参照

    いつもお世話になっております。 決まったフォルダ内の複数のBook「個別情報(製品名)」のフルパスを別のBook「リスト」のA列に入れると、「個別情報(製品名)」のシート(規格)の指定のセルを「リスト」のシート(規格一覧)に行方向に引っ張ってくるようにしたいのですが。 1度に参照するシートは5-10枚。 参照するセル番地は決まっていて、多いと15個程度。 参照セルは「リスト」のシート(規格一覧)の最下行のセルに入るようにしたい。 閉じたままのBookのシートを指定して、セル参照が出来ることを少し前に知ったのですが、当方には難易度が高そうで躊躇していましたが最近コロナで時間が出来たのでチャレンジしてみようかと。 当方永遠のVBA初心者ですのでその辺もご配慮の上よろしくお願い致します。

  • 他のブックからの検索

    こんばんは。 エクセルのセルに自動でデータが入るように、 Sheet1のセルA1へSheet2のセルA3の数値を表示 =Sheet1!A3 といった数式をいれますが、 このように、他のブックに作成し保存したリストから データを呼んでくる…ということがエクセルで できるのでしょうか? もし、できるのであればその方法も是非教えてください。 宜しくご回答お願いします。m(__)m

  • Excel 同ブックの他シートを参照するセルを、他ブックのセルにコピー

    こんにちは。Excelの使い方について質問させていただきます。 よろしくお願いします。 Excel2003を使っています。 シート数、シート名がまったく同じブックが2つあります。 AブックのAシートのA1セルを参照しているセルである AブックのBシートのA1セルをコピーします。 BブックのBシートのA1セルにペーストします。 BブックのAシートのA1セルを参照して欲しいのですが、 別ブックであるAブックのAシートのA1セルを参照するように 自動的に変換されてしまいます。 シンプルにそのままコピーすることは不可能でしょうか。 セルのコピーでは無く、中の文字列を選択してコピーしても、 何が起こっているのかよくわかりませんが上手くいきません。 Excel初心者です。マクロはまったく使えません。 親切な方、どうぞよろしくお願いします。

  • 違うブックにあるセルを検索して結果を出したい

    AとBのブックがあります。 それぞれシート1のA列にフォルダ名が入っています。 (順番は異なりますが、同じフォルダ名が入っています。) ブックAのシート1にはフォルダ名のみ(A列) ブックBのシート1にはフォルダ名と(A列)作成者(D列)が入っています。 ブックAのB列に作成者を入れたいのです。 大量にあるためにブックBから該当の作成者を探してきて、ブックAのB列に入れたいです。 関数でもできればそれでも良いのですが、できないのであれば、VBAでどのように書くのか教えていただければ幸いです。 ちなみにA列に入っているフォルダ名ですが、一部異なっていることもあり得ます。 (ブックAは自動取得で取っているもの。ブックBは手入力なので) もし、該当がない場合は、「該当なし」などわかりやすい表示があればもっと良いのですが。 すみませんが、よろしくお願いいたします。

  • 複数のシートや複数のブックの検索

    こんばんは。 エクセルはほぼ初心者です。 セルに入れた文字をほぼ一致、または完全一致で複数のシート内を 検索して、その行の数値を表示させる事はできますか? VBAやマクロで教えて頂けると幸いです。 欲張りですみませんが↑の別バージョンで複数のブック内も可能でしょうか?

  • 条件一致するセルを異なるブックへコピーするには…

    EXCEL VBAで条件に一致するセルを別のブックの複数のシートへコピーして 貼りたいのですが、どのようにしたらよいか教えて下さい。 (1)のブック、A列と、(2)のブックA列には順番はバラバラですが、同じデータ(数字とアルファベットの番号が入っています)これを元に、(1)のブックのK列のデータを(2)のブックシートa~dのY列に貼りたいのです。(シートa~dにはそれぞれ異なるデータが入っていますが、列数は一緒です。A列に入っているデータも(1)のブックと一緒です。) お詳しい方どうかどうか宜しくお願い致します。

専門家に質問してみよう