`

VBA 在指定目录及其子目录中的excel文件中检索指定的文字列

    博客分类:
  • VBA
vba 
阅读更多
效果图:

对应的代码入下:
对应的代码入下:

Sub getColumn()
    
    Dim work1 As Workbook
    Dim path, keyWord As String
    Dim fileContent As String
    Dim unFoundCol As String
    
    ' 指定检索的目录
    path = ThisWorkbook.Sheets(2).Range("F1").Value
    '指定的检索文字列
    keyWord = ThisWorkbook.Sheets(2).Range("F2").Value
    If IsEmpty(path) Then
        MsgBox ("请输入路径")
        Exit Sub
    End If
     If IsEmpty(keyWord) Then
        MsgBox ("请输入检索路径")
        Exit Sub
    End If
    fileContent = searchKeyWord(path, keyWord)
    
    MsgBox ("检索完成")

End Sub

' 检索函数
Function searchKeyWord(path, keyWord)
    Dim j As Integer
    Dim MyFile, MyPath, MyName
    Dim file() As String
    Dim Wb As Workbook, Ws As Worksheet, FN$
    Dim i, k, x
    j = 6
    i = 1
    k = 1
    x = 1
    
    ReDim file(1 To i)
    file(1) = path & "\"
    Do Until i > k
    FN = Dir(file(i), vbDirectory)     '获取文件夹下的文件

        Do Until FN = ""
            If InStr(FN, ".") = 0 Then '如果是个文件夹,则将该文件夹添加到检索目录里

                k = k + 1

                ReDim Preserve file(1 To k)

                file(k) = file(i) & FN & "\"
            Else
                 If InStr(FN, ".xls") > 0 Then
                    Set Wb = GetObject(file(i) & "\" & FN)    'OPEN File
                    With Wb
                        For Each Ws In .Worksheets  '循环每个sheet检索

                            With Ws
                                If WorksheetFunction.CountIf(.UsedRange, "*" & keyWord & "*") <> 0 Then  '在每个sheet的活动区检索文字列       

                                   ThisWorkbook.Sheets(2).Range("A" & j).Value = file(i)
                                    ThisWorkbook.Sheets(2).Range("B" & j).Value = FN
                                    ThisWorkbook.Sheets(2).Range("C" & j).Value = Ws.Name '检索到输出,可以改成自己想要的格式
                                    j = j + 1
                                    GoTo nextFound
                                 End If
                            End With
                            Next Ws
                      End With
                      Wb.Close False  '关闭excel文件不保存
 
                End If
           End If
nextFound:   FN = Dir  '检索下一个文件
       Loop
    i = i + 1
    Loop
End Function

  • 大小: 45.9 KB
分享到:
评论

相关推荐

    Excel内容检索

    Excel文件(.xlsx格式)是一种基于Open XML标准的数据存储格式,它将工作簿、工作表、图表等元素以XML的形式存储在一系列的子文件中。这些文件被压缩在一个ZIP容器中,这就是我们看到的.xlsx扩展名。要进行内容检索...

    EXCEL VBA 方法参考 手册

    ### EXCEL VBA 方法参考手册知识点详解 #### 目录 - **Collection对象** - ADD方法 - Item方法 - Remove方法 - **Debug对象** - Assert方法 - Print方法 - **Dictionary对象** - Add方法(Dictionary) - ...

    VBA示例之 求人不如自已动手 自动建立多级目录

    在IT行业中,VBA(Visual Basic for Applications)是一种强大的编程语言,主要用于自动化和定制Microsoft Office应用程序,如Excel、Word和Access。本示例是关于如何使用VBA来自动创建多级目录,这对于处理大量文件...

    Excel-165个VBA自定义函数大全

    在项目管理和文件组织中,自动创建目录结构可以节省大量时间,该函数提供了这一功能。 #### 72. 统计经筛选后符合条件的记录条数 数据筛选是数据分析中的基本操作,统计符合条件的记录数量是评估数据质量和完整性的...

    批量搜索文件夹下的文件名-并导出EXCEL

    标题 "批量搜索文件夹下的文件名-并导出EXCEL" 涉及到的知识点主要集中在文件系统操作和VBA编程技术上。在IT领域,这种任务通常是为了管理和整理大量分散的文件,提高工作效率。以下是对这个主题的详细解释: 1. ...

    VBA实例601例子

    在Excel VBA中,你可以通过编写代码来操控电子表格,进行数据分析,甚至构建完整的业务系统。下面我们将深入探讨"VBA实例601例子"中涉及的一些关键知识点。 1. **调用外部程序**:在11 调用外部程序的章节中,你将...

    中文版Excel.2007高级VBA编程宝典.part1

    本书的作者是当之无愧的世界级Excel电子表格专家,他为读者倾心打造了这本专著,书中汇聚他15年来使用Excel的所有经验,涵盖Excel应用和VBA编程涉及的方方面面,是经典著作Excel 2003 Power Programming with VBA的...

    VBA word 手册

    VBA Word手册可能包含各种实用示例,如批量替换文本、自动目录生成、邮件合并、文档统计分析等,这些都展示了VBA在提高Word工作效率方面的强大能力。 十、搜索功能 手册中的搜索功能使开发者能快速找到所需的信息,...

    2021-2022计算机二级等级考试试题及答案No.5024.docx

    23. 查看文件内容:在DOS或命令行环境中,使用TYPE命令可以查看文本文件的内容,子目录下的文件需完整指定路径。 24. 命令窗口操作:命令窗口可以执行、复制和重复命令,但不能同时执行多个命令,需要逐条执行。 ...

    2021-2022计算机二级等级考试试题及答案No.2415.docx

    21. **File 类删除操作**:Java 中的 `File` 类,如果表示的目录包含子目录或文件,直接调用 `delete()` 方法无法删除,需要先删除子目录和文件。 22. **列表框和组合框**:列表框一般不允许用户输入新值,而组合框...

    CHM帮助文件.rar

    - 在提供的CHM文件中,API(Application Programming Interface)帮助文件通常包含编程语言的函数、方法、类库等详细信息,为开发者提供编程指南。 - 对于Windows API,如“Win32 API”或“.NET Framework API”,...

    Access 2000开发使用手册004

    模块则是在VBA环境中编写代码的地方,可用于创建自定义函数和公共子过程,增强数据库应用的灵活性和扩展性。 #### 三、使用Access数据库的关键步骤 - **创建新数据库**:掌握如何从零开始构建数据库,是开发过程的...

    中文ACCESS_2000疑难解析part2

    2. **查询技巧**:在011.PDF至016.PDF中,可能详细讲解了查询语言的使用,包括选择查询、交叉表查询、参数查询、联合查询、子查询以及复杂的SQL语句,帮助用户高效检索和分析数据。 3. **表间关系**:Access 2000...

    2021-2022计算机二级等级考试试题及答案No.11024.docx

    在给出的例子中,只有`D.MD\USER\XY\P\X\Y`是一个有效的命令,因为它指定了完整的路径来创建一个新目录。 #### 9. 计算机存储 - **知识点**: 计算机将程序和数据存储在**存储器**中。 - **解析**: 计算机的存储器是...

    探析Auto CAD的二次开发技术及相关应用.pdf

    数据管理软件用于存储、检索和处理大量数据,包括文字和图形信息。为了适应设计过程中实体关系复杂、数据类型多样的特点,需要建立工程数据库系统,其操作主要是实时性的交互处理。 AutoCAD的二次开发技术涉及到...

    Office技巧1000例

    在《Office技巧1000例》中,涵盖了Microsoft Office套件中多个应用程序的实用技巧,包括Word、Excel、PowerPoint、Access等。这些技巧旨在帮助初学者快速掌握日常办公软件的高效使用方法,提高工作效率。 1. **Word...

    Access+2000中文版高级编程

    13.4.2 在Access中调用Excel 402 13.4.3 在Access中调用Microsoft Graph 404 13.4.4 在Access中调用Microsoft Project 407 13.5 使用自动化功能在Microsoft Project中驱动Access 410 13.6 应用自动化功能在...

    Access 2000中文版高级编程(part1)

    13.4.2 在Access中调用Excel 402 13.4.3 在Access中调用Microsoft Graph 404 13.4.4 在Access中调用Microsoft Project 407 13.5 使用自动化功能在Microsoft Project中驱动Access 410 13.6 应用自动化功能在...

    查询统计报表源代码 学习

    在压缩包内的“report”文件可能是源代码的主文件或目录,包含了实现上述功能的代码。它可能包含多个子文件,分别对应查询模块、统计模块和报表生成模块。对于学习者来说,通过阅读和理解这个“report”文件,可以...

Global site tag (gtag.js) - Google Analytics