前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA在多个文件中Find某字符的数据并复制出来

VBA在多个文件中Find某字符的数据并复制出来

作者头像
哆哆Excel
发布2022-10-25 14:14:51
2.8K0
发布2022-10-25 14:14:51
举报
文章被收录于专栏:哆哆Excel

VBA在多个文件中Find某字符的数据并复制出来

今天在工作中碰到的问题

【问题】有几个文件,每个文件中有很多条记录,我现在要提取出含有“名师”两个字符的记录。

文件如下:

【常规做法】打开文件--查找---复制---粘贴---关闭文件,再来一次,再来一次

晕,如果文件不多,数据不多那还好,如果文件多,每个文件的记录也很多,那就是“加班加班啦”

【解决】先Application.GetOpenFilename要打开文件对话框,选中要打开的文件,存入数组,再GetObject(路径)每一个文件打开,用Find指定字符,找到第一个时用firstAddress记录起来,再FindNext查找下一个,当循环到最初的位置时停止,把找到的数据整行复制出来就可也。完成一个文件,再找开一个文件……

【VBA代码】

代码语言:javascript
复制
SubGetFile_Find_FindNext()
    Dim fileToOpen, x, total_file_path, m,title_row
    Dim MyOb As Object, mysht As Worksheet
    fileToOpen =Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , "打开文件", , True)
    If TypeName(fileToOpen) ="Boolean" Then MsgBox "你选择了“取消”,将要退出程序":Exit Sub
    Application.DisplayAlerts = False
'    Application.ScreenUpdating = False
    Setmysht = ActiveSheet
'    mysht.UsedRange.Clear
    title_row = 1
    m = 0
    i = 0
    ss = VBA.InputBox("输入要查找的字符")
    If ss = "" Then MsgBox "你没有输入": Exit Sub
    For Each rr In fileToOpen
        Set MyObj = GetObject(rr)
        With MyObj
            With MyObj.Worksheets(1)
                Set c = .Cells.Find(ss,Lookat:=xlPart, LookIn:=xlValues)
                If Not c Is Nothing Then
                    firstAddress = c.Address
                    Do
                         i = i + 1
                        Lrow =mysht.Cells(Rows.Count, 1).End(xlUp).Row + 1
                        c.EntireRow.Copymysht.Cells(Lrow, 1)
                        Set c =.Cells.FindNext(c)
                    Loop While Not c Is NothingAnd c.Address <> firstAddress
                End If
                m = m + 1
            End With
            .Close False
        End With
        Set MyObj = Nothing
    Next
    Application.DisplayAlerts = True
'    Application.ScreenUpdating = True
    MsgBox "打开文件数:" & m & vbCrLf & "找到记录数:" & i
End Sub

【运行】

A.打开文件对话框,找到你要打开的文件

B.弹出输入字符的对话框,输入你要查找的字符

C.完成,打开文件数:3个,查找到了记录:36

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档