何でも検索 | |
---|---|
[196282] 何でも検索- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ あいか -(2024/09/17(19:20)) □U R L/ Windows11 Office2021です。 図1 @検索@.xlsm Sheet : 検 索 図2【検索結果】 A B C A B C 2 ファイル名 シート名 セル内内容 2 ファイル名 シート名 セル内内容 3 3 中部支店 人事部 FAX 山田 4 4 新潟営業 総務・電話 fax 5 5 東京本社 電話外線 花子,鈴木 ,FAX, 1、このマクロは、指定されたフォルダ内のすべてのExcelファイル(*.xls)を検索し、特定の英数字、記号【半角,全角】を探してリスト化するものです。 2、リスト化したB列のシート名を。右クリックすると、そのシートが開くようになっています。 3、検索対象Bookは、30個で、Sheet数は8Sheet以上です。 ご教授受けたい事は 1、図2のB列シート名を右クリックで、C列セル内内容を選択して開く。】 2、【検索スピードを速くしたいのです。】 宜しくお願い致します。 Sub リスト() Dim c As Range Dim i As Integer, j As Integer Dim FName As String Dim PName As String Dim FWhat As String Dim BigR As Range Dim fAddr As String j = 2 PName = ActiveWorkbook.Path '自分(このBook)と同じフォルダのPath FName = Dir(PName & "\" & "*.xls") 'その中の、*.xls ファイル ThisWorkbook.Worksheets(1).Range(Range("A3"), Range("A3").SpecialCells(xlCellTypeLastCell)).ClearContents FWhat = InputBox("英数字、記号【半角,全角】を検索します。") Application.ScreenUpdating = False Do While FName <> "" 'FNameがある限り繰り返す If FName <> ActiveWorkbook.Name Then Workbooks.Open PName & "\" & FName For i = 1 To ActiveWorkbook.Worksheets.Count Set BigR = ActiveWorkbook.Worksheets(i).UsedRange Set c = BigR.Find(What:=FWhat, LookAt:=xlPart) If Not c Is Nothing Then fAddr = c.Address '見つかった Do j = j + 1 With ThisWorkbook.Worksheets(1) .Cells(j, 1).Value = FName .Cells(j, 2).Value = Worksheets(i).Name .Cells(j, 3).Value = c.Value End With Set c = BigR.FindNext(c) '2個目以降を探す If c.Address = fAddr Then Exit Do '見つかったセル番地が最初と同じなら中止 Loop End If Next ActiveWorkbook.Close End If FName = Dir() '次のファイル名を探す Loop Application.ScreenUpdating = True If j = 1 Then MsgBox FWhat & " は、このFolderのBookにはありませんでした" ' Application.ScreenUpdating = False Application.ScreenUpdating = True End Sub |
[196288] Re[1]: 何でも検索- ■記事引用/メール受信=OFF■ □投稿者/ 匿名 -(2024/09/28(11:53)) □U R L/ Worksheet_BeforeRightClickイベントプロシージャを使えば良いと思います。 |
[196289] Re[2]: 何でも検索- ■記事引用/メール受信=OFF■ □投稿者/ あいか -(2024/09/30(18:47)) □U R L/ 匿名 様 お返事ありがとうございます。 Worksheet_BeforeRightClickを調べてみます。 |
[196290] Re[3]: 何でも検索- ■記事引用/メール受信=OFF■ □投稿者/ あいか -(2024/10/01(13:27)) □U R L/ 匿名 様 ThisWorkbookに以下を書いてみたのですが、思った通りには行きませんでした。 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim FName As String Dim PName As String Dim ws As Worksheet ' B列を右クリックした場合 If Not Intersect(Target, Me.Columns("B")) Is Nothing Then Cancel = True ' 右クリックメニューをキャンセル FName = Target.Offset(0, -1).Value ' A列のファイル名を取得 PName = ThisWorkbook.Path ' 現在のブックのパスを取得 ' ファイルを開く Workbooks.Open PName & "\" & FName ' 対象のセルを選択 Set ws = ActiveWorkbook.Sheets(Target.Value) ws.Activate ws.Cells(1, 1).Select ' 必要に応じてセルの位置を変更 End If End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196291] Re[4]: 何でも検索- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2024/10/07(22:27)) □U R L/ >ThisWorkbookに以下を書いてみたのですが、思った通りには行きませんでした。 ThisWorkbookモジュールにではなく、検索シートのモジュールに書くべきじゃないですか? |
このトピックに書きこむ |
---|