如何使用 VBA 在众多文本 .log 文件之一中查找特定字符串?

2024-03-16

这是我迄今为止查找文件夹中所有日志文件的代码。但我需要能够在每个文件中找到特定的字符串,如果在一个文件中找到它,则停止查找并退出循环并报告它所在的文件名。

打开文件和搜索文件的方法似乎有很多,我不知道哪种方法最好,而且我通常不使用 VBA,但目前我只能使用 VBA。

顺便说一句,最多有 36 个日志文件,每个文件最大为 5MB。

Sub StringExistsInFile()
    Dim TheString As String

    TheString = "MAGIC"

    Dim StrFile As String
    StrFile = Dir("c:\MyDownloads\*.log")
    Do While Len(StrFile) > 0
        'Find TheString in the file
        'If found, debug.print and exit loop
    Loop
End Sub

我找到了这段代码,但似乎在 2007+ 版本的 Excel VBA Application.FileSearch 中被消除了:

Sub FindText()
'http://www.mrexcel.com/forum/excel-questions/68673-text-file-search-excel-visual-basic-applications.html

Dim i As Integer

'Search criteria
With Application.FileSearch
    .LookIn = "c:\MyDownloads" 'path to look in
    .FileType = msoFileTypeAllFiles
    .SearchSubFolders = False
    .TextOrProperty = "*MAGIC*" 'Word to find in this line
    .Execute 'start search

'This loop will bring up a message box with the name of
'each file that meets the search criteria
    For i = 1 To .FoundFiles.Count
        MsgBox .FoundFiles(i)
    Next i

End With

End Sub

这段代码:

  • 寻找所有*.log文件扩展名C:\MyDownloads\

  • 打开每个*.log文件并读取每一行

  • if theString   MAGIC is found, then it prints the file name in the Immediate Widnow (CTRL+G)

Sub StringExistsInFile()
    Dim theString As String
    Dim path As String
    Dim StrFile As String
    Dim fso As New FileSystemObject
    Dim file As TextStream
    Dim line As String

    theString = "MAGIC"
    path = "C:\MyDownloads\*.log"
    StrFile = Dir(path & "*.log")

    Do While StrFile <> ""

        'Find TheString in the file
        'If found, debug.print and exit loop

        Set file = fso.OpenTextFile(path & StrFile)
        Do While Not file.AtEndOfLine
            line = file.ReadLine
            If InStr(1, line, theString, vbTextCompare) > 0 Then
                Debug.Print StrFile
                Exit Do
            End If
        Loop

        file.Close
        Set file = Nothing
        Set fso = Nothing

        StrFile = Dir()
    Loop
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 VBA 在众多文本 .log 文件之一中查找特定字符串? 的相关文章

  • 将一个 Excel 工作表中的两列与另一工作表中的两列进行比较,如果匹配,则从另一列复制数据

    我一直在考虑使用 Excel VLOOKUP 函数来完成此任务 但我对此非常不熟悉 我需要执行以下操作 在第一张纸上 A 列和 B 列包含 3000 行名字和姓氏 我需要将其与第二张纸进行比较 第二张纸也有名字和姓氏 第三列包含电子邮件地址
  • 在 C++ 中使用哪些字符串类?

    我们有一个用 C MFC 编写的多线程桌面应用程序 目前开发人员使用 CString 或 std string 可能取决于他们的心情 所以我们想选择一个实现 可能不是这两个 MFC 的 CString 基于写时复制 COW 习惯用法 有些人
  • 使用 Powershell 关闭 Excel 应用程序

    我正在从 powershell 启动工作簿中的宏 以自动化流程 下面在 powershell 中打开 Excel 工作簿并运行宏 而不可视化该过程 问题是 即使我没有看到宏运行 从宏生成的新 excel 实例仍然打开 start Excel
  • 从一本工作簿复制并粘贴到另一工作簿中

    我编写了以下代码并不断看到pastespecial method of class has failed 我试图克服这个问题 但似乎没有任何效果 我正在尝试从一个工作簿复制整个工作表 并将其粘贴到另一个工作簿中 Set x Workbook
  • 将工作表合并为一张

    我有一些Excel工作表 其风格为 组织1 姓名 职业 克里斯 承包商 简 员工 组织2 姓名 职业 鲍勃 设施 Trey 软件开发人员 并希望将这些工作表合并到具有以下格式的主工作表中 组织名称 职业 1 克里斯 承包商 1 简 员工 2
  • 使用vba分割和重命名pdf文件

    我收到了一份包含多张工资单的合并文件 每张工资单上的特定位置都有一个特定的数字 我希望使用这个确切的数字作为每个文件名 例如37224 pdf 我尝试使用下面的 VBA 代码将工资单拆分并命名为单独的工资单 Option Explicit
  • toLocaleLowerCase() 和 toLowerCase() 之间的区别[重复]

    这个问题在这里已经有答案了 我试图fiddle http jsfiddle net xameeramir kr33b0aL with toLocaleLowerCase http www w3schools com jsref jsref
  • 有没有人有一段 PHP 代码来抓取字符串中的第一个“句子”?

    如果我有这样的描述 我们更喜欢可以回答的问题 而不仅仅是讨论 提供详细信息 写得清晰简单 我想要的只是 我们更喜欢可以回答的问题 而不仅仅是讨论 我想我会搜索一个正则表达式 比如 确定strpos 然后从主字符串中执行一个substr 但我
  • 字符串等于和 == 与字符串连接[重复]

    这个问题在这里已经有答案了 我试图理解字符串连接与字符串比较的输出 需要明确的是 我有一个类使用 和 equals 来比较两个字符串 我试图将 和 equals 的输出连接到一个字符串 equals 的输出是 concats 但是 的输出是
  • VBA.查找并添加值

    我试图在 Excel 工作表的列中查找特定值 然后在右侧三列中添加一个值 1 My code Sub AddNote ActiveSheet Range F F Find What Cat Select Selection Offset 0
  • 通过宏根据工作表名称重新排序 Excel 工作表

    如果我的 Excel 文档中有 6 个工作表 按以下顺序命名和排列 O1 O2 O3 O1 2 O2 2 O3 3 是否可以编写一个宏来更改这些工作表的顺序 这是我正在寻找的序列 O1 O1 2 O2 O2 2 O3 O3 2 Thanks
  • MASM 字符串反转

    好吧 我正在讨论这个问题 可能是一个非常复杂的解决方案 但这是我脑海中浮现的第一件事 我需要编写一个汇编语言程序来反转 源 字符串 而不使用 目标 字符串 临时变量 这是我的尝试 INCLUDE Irvine32 inc data sour
  • 输出参数有什么问题?

    在 SQL 和 C 中 我从来都不太喜欢输出参数 我也从未在 VB6 中通过 ByRef 传递参数 依靠副作用来完成某件事只会让我烦恼 我知道它们是一种解决无法从函数返回多个结果的方法 但 SQL 中的行集或 C 和 VB 中的复杂数据类型
  • MS Access 2003 - 有没有一种方法可以以编程方式定义图表的数据?

    因此 我有一些 VBA 用于获取使用表单的图表向导构建的图表 并自动将其插入到 PowerPoint 演示文稿幻灯片中 我将这些图表表单用作较大表单中的子表单 该表单具有用户可以选择的参数来确定图表上的内容 这个想法是 用户可以确定参数 根
  • 无法解析 Android 资源字符串

    我正在学习 Android 我遇到了一个我认为很奇怪的问题 在 res values strings xml 我有
  • 传递 Range 参数时出现错误 424

    我是 VBA 新手 在这段非常简单的代码中遇到错误 Sub sub1 Dim myCell As Range Set myCell Sheet1 Cells 2 2 sub2 myCell lt lt lt lt Error 424 End
  • MS Access DAO 连接在退出时放弃更改

    因此 我有一个 Access 表单 我在其中使用此 VBA 代码以及与 MySQL 数据库的 DAO 连接 一切都很好 但如果用户关闭表单而不单击 保存 按钮 新记录无论如何都会保存 所以我正在寻找的是 是否有任何方法可以在关闭事件时阻止将
  • 当用户输入时将输入值转换为货币格式

    我无法将输入值转换为货币格式 我想在用户键入数字 5 000 00 125 000 00 时自动添加千位和小数分隔符 这是我的代码 input CurrencyInput on blur focus keyup function this
  • DASM 汇编器中的 ASCII 到 C64 屏幕代码

    我正在通过 C64 模拟器学习 6502 micro 的汇编 目前正在尝试将字符串输出到屏幕 这是我的代码 processor 6502 org 1000 ldx 00 using x register as column counter
  • 在 Scala 中有效地重复字符/字符串 n 次

    我想更有效地执行以下操作 def repeatChar char Char n Int List fill n char mkString def repeatString char String n Int List fill n cha

随机推荐

  • EJB 3.1 API 的 Maven 存储库

    我可以使用什么 Maven 存储库来实现 EJB 3 1 API 依赖项 这种对中央的依赖起了作用
  • 在哪里可以找到 scala.Any 和 scala.AnyRef 的定义?

    我想跳到 Any 的源代码来看看一些方法是如何实现的 但我发现它没有包含在 scala library src 中 AnyRef 也没有包含在其中 但是值类型和 Nothing 都包含在其中 我很好奇 Scala 对象基类型是如何以及在哪里
  • 如何从父对象获取对象的属性值

    我在这个结构中有对象 obj user name jeterson title I am a test 我有一把有价值的钥匙 user name 我试图获得这样的价值 obj key 意义obj user name 它不起作用 只适用于ob
  • WPF 4 多点触控拖放

    我有一个 WPF 4 应用程序 我使用标准实现了拖放DragDrop DoDragDrop方法 但我使用触摸而不是鼠标事件来做到这一点 我的网格 我正在拖动 的 XAML 如下
  • 如果 proxy_pass 响应中存在 etag,则禁用 gzip

    我是 Nginx 新手 如果 proxy pass 返回 ETag 标头 是否有办法禁用 gzip I E gzip on location foo bar proxy pass http server 123 if upstream ht
  • 通过 try() 之类的方法使 R 命令超时

    我正在并行运行大量迭代 某些迭代比其他迭代花费的时间要长得多 例如 100 倍 我想将这些超时 但我不想深入研究函数 称为 fun c 背后的 C 代码来完成繁重的工作 我希望有类似于 try 的东西 但有一个 time out 选项 然后
  • 最新的 OpenGL 教程或 C++ 书籍 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Websphere 中的 NoClassDefFoundError — 存在 JAR

    我有一个简单的 Spring MVC 应用程序 它从 LDAP 服务器查找一些用户详细信息 并使用 JSP 打印出一个简单的 HTML 页面 该应用程序在 Tomcat 6 上运行良好 它使用 Spring LDAP 1 3 1 和 LDA
  • 将变量传递到 CURLOPT_POSTFIELDS C++

    我正在尝试将变量传递到CURLOPT POSTFIELDS 我当前的代码 size t curl write void ptr size t size size t nmemb void stream std string cmd stat
  • 有没有办法询问 iOS 视图的哪个子视图具有第一响应者状态? [复制]

    这个问题在这里已经有答案了 在 Mac OS X 中 您可以这样找到第一响应者 self window firstResponder 在iOS中有什么方法可以做到这一点吗 或者您是否需要枚举子控件并发送isFirstResponder给每一
  • 如何使用 eclipse Nsight 仅使用一个 GPU 调试 CUDA

    我收到错误 所有 cuda 设备均用于显示 在调试时无法使用 使用Ubuntu 有没有什么方法可以使用 Nsight eclipse 仅使用一个 GPU 进行调试 我见过类似的解决方案 sudo 服务 lightdm 停止 杀死 X 但这也
  • 此版本的ChromeDriver仅支持Chrome版本93

    我有一个 Angular 项目 它使用 puppeteer 运行 Karma 偶尔会出现以下错误 11 13 43 E launcher session not created This version of ChromeDriver on
  • 如何简化三次贝塞尔曲线?

    我有一条三次贝塞尔曲线 由许多段组成 左图 它有一些粗糙的曲率 我需要让它像右图一样平滑 这个问题有点像 降噪 我该如何实现呢 有类似的线程here https stackoverflow com questions 3497694 sim
  • 在 C# 中打印到 LPT1

    如何在 C 中使用文件 LPT1 直接打印到点阵打印机 我用 fopen 在 C 上做到了这一点 但我不知道如何在 c 中做到这一点 非常感谢 在 Windows 中将打印机设置为 通用 仅文本 然后打印到它 这是我用来打印到具有自己的编码
  • UIPickerView iOS7.1 中未定义的键 NSException

    我在 iOS 7 1 模拟器中遇到了 7 0 中未出现的异常 它似乎是在核心的某个地方处理的 因为它只触发异常引发断点 它不会登录到控制台或崩溃 在 UIPickerView 中滚动选项时会发生这种情况 没有可用的有意义的回溯 直接从 UI
  • 如何设置自定义编辑文本中的最小文本大小?

    我正在使用这个自定义 EditText 它会自动调整 EditText 内的文本大小 它工作得很好 但是 文本在换行之前变得太小了 如何设置最小文本大小 这样只有当文本大小达到 12sp 时才换行 public class FontFitT
  • Guava CacheBuilder:暗示实体删除的附加条件

    I want 尝试使用静态类是外部条件 方法
  • 使用 gradle 构建 android 应用程序时 Lint 失败

    我用 android studio 创建了一个应用程序 但每次我尝试使用命令gradle build构建应用程序时 它显示 lint failed 当我检查 gradle build 的调试信息时 它说 21 10 26 215 DEBUG
  • Lua:字符串中的换行符

    我一直在开发一个格式化程序 它将接受一个长字符串并将其格式化为一系列在特定字符限制内的单词处断开的行 例如 他吃面包每 8 个字符断开一次 将返回类似以下内容的内容 He eats the bread 这是因为 He eats 包含 7 个
  • 如何使用 VBA 在众多文本 .log 文件之一中查找特定字符串?

    这是我迄今为止查找文件夹中所有日志文件的代码 但我需要能够在每个文件中找到特定的字符串 如果在一个文件中找到它 则停止查找并退出循环并报告它所在的文件名 打开文件和搜索文件的方法似乎有很多 我不知道哪种方法最好 而且我通常不使用 VBA 但