戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
何でも検索

    [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
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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モジュールにではなく、検索シートのモジュールに書くべきじゃないですか?
      



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G