Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


54978 / 76732 ←次へ | 前へ→

【26535】Re:フォルダー内エクセルファイルシート...
回答  小僧  - 05/7/8(金) 11:28 -

引用なし
パスワード
   ▼さくらんぼ さん:
こんにちは。

Sub フォルダ内検索()
Dim FSO As Object
Dim FolPath As String
Dim Fol As Object
Dim Fil As Object
Dim KWord As Variant

  FolPath = "C:\データ\"
  KWord = Application.InputBox("検索名を入力して下さい。")
    If KWord = "" Or KWord = False Then Exit Sub
'--------------------------------------------------------------
  Application.DisplayAlerts = False
  Application.ScreenUpdating = False
'--------------------------------------------------------------
  ActiveSheet.Range(Rows(2), Rows(2).End(xlDown)).ClearContents

  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set Fol = FSO.GetFolder(FolPath)
    For Each Fil In Fol.Files
      If FSO.GetExtensionName(Fil.Name) = "xls" Then
        Call データ検索(KWord, FolPath & Fil.Name)
      End If
    Next
  Set Fil = Nothing
  Set Fol = Nothing
  Set FSO = Nothing
'--------------------------------------------------------------
  Application.DisplayAlerts = True
  Application.ScreenUpdating = True
'--------------------------------------------------------------
End Sub

Function データ検索(strName As Variant, FName As String)
Dim motoSheet As Worksheet
Dim Sht As Worksheet
Dim y As Long
Dim x As Long
  Set motoSheet = ActiveSheet
    Workbooks.Open (FName)
      For Each Sht In ActiveWorkbook.Sheets
        For y = 2 To Range("C65535").End(xlUp).Row
          For x = 12 To 33 Step 3
            If Sht.Cells(y, x).Value = strName Then
              Sht.Rows(y).Copy
              motoSheet.Paste motoSheet.Rows _
                (motoSheet.Range("C65535").End(xlUp).Row + 1)
              Exit For
            End If
          Next
        Next
      Next
    ActiveWorkbook.Close (False)
  Set motoSheet = Nothing
End Function

FileSystemObject を使用した以外は難しい命令は使っていないつもりです。

検索文字(作業者のみしか対応させていません)を入れると
変数「FolPath」に指定されたフォルダ内の全エクセルファイルを検索し、
見つかった場合はその行をコピーして元のシートに貼り付けるコードです。

0 hits

【26486】フォルダー内エクセルファイルシート全文検索について。 さくらんぼ 05/7/6(水) 22:26 質問
【26488】Re:フォルダー内エクセルファイルシート全... かみちゃん 05/7/6(水) 23:07 発言
【26489】Re:フォルダー内エクセルファイルシート全... さくらんぼ 05/7/6(水) 23:25 発言
【26502】Re:フォルダー内エクセルファイルシート... 小僧 05/7/7(木) 11:26 発言
【26527】Re:フォルダー内エクセルファイルシート... さくらんぼ 05/7/7(木) 21:00 発言
【26535】Re:フォルダー内エクセルファイルシート... 小僧 05/7/8(金) 11:28 回答
【26575】どうすれば・・・ さくらんぼ 05/7/10(日) 22:16 質問
【26585】Re:どうすれば・・・ 小僧 05/7/11(月) 10:02 発言
【26653】ありがとうございます!! さくらんぼ 05/7/12(火) 23:15 お礼

54978 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free