lyphtesttest excel search 検索

Dim thisBook As Workbook
Dim result As String

Sub Sample()
    Set thisBook = ThisWorkbook
    Call FileSearch(Range("b2").value, Range("b4").value)
    Sheets("result").Activate
End Sub

Sub FileSearch(Path As String, keyWord As String)
    Dim fso As Object, Folder As Variant, File As Variant
    Set fso = CreateObject("Scripting.FileSystemObject")
    For Each Folder In fso.GetFolder(Path).SubFolders
        Call FileSearch(Folder.Path, keyWord)
    Next Folder
    For Each File In fso.GetFolder(Path).Files
        If Right(File.Path, 3) = "xls" Or Right(File.Path, 4) = "xlsx" Then
            Dim strBookName As String
            Workbooks.Open File.Path
            strBookName = ActiveWorkbook.Name
            Dim s As Worksheet
            Dim i As Integer
            i = 1
            For Each s In ActiveWorkbook.Sheets
                Call search1(File.Path, strBookName, s, keyWord)
            Next s
            Workbooks(strBookName).Close SaveChanges:=False
        End If
    Next File
End Sub

Sub search1(filePath As String, shortName As String, sheet As Worksheet, keyWord As String)

    Dim rngSerch As Range
    Set cellTmp = sheet.Cells
    Dim adr As String
    Set rngSerch = cellTmp.Find(keyWord)
    If rngSerch Is Nothing Then
        Exit Sub
    Else
        adr = rngSerch.address
        Call sheetInsert(filePath, shortName, sheet.Name, keyWord, rngSerch.address, rngSerch.value)
    End If
    
    Do
        Set rngSerch = cellTmp.FindNext(after:=rngSerch)
        If rngSerch.address = adr Then
            Exit Do
        Else
            Call sheetInsert(filePath, shortName, sheet.Name, keyWord, rngSerch.address, rngSerch.value)
        End If
    Loop
End Sub

Sub sheetInsert(filePath As String, shortName As String, sheetName As String, keyWord As String, address As String, value As String)
    Set sheetTmp = thisBook.Sheets("result")
    thisBook.Activate
    For i = 3 To sheetTmp.Range("A10000").End(xlUp).Row + 1
        If sheetTmp.Range("A" & i).value = "" Then
            sheetTmp.Range("A" & i).value = filePath
            sheetTmp.Range("B" & i).value = shortName
            sheetTmp.Range("C" & i).value = sheetName
            sheetTmp.Range("D" & i).value = keyWord
            sheetTmp.Range("E" & i).value = address
            sheetTmp.Range("F" & i).value = value
            Exit For
        End If
    Next
End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值