找回密码
 立即注册
搜索
查看: 3061|回复: 21

[软件] 求推荐批量搜索多个EXCEL文件内数据的工具

[复制链接]
     
发表于 2016-3-28 10:23 | 显示全部楼层 |阅读模式
如题,要找的数据分散在许多EXCEL文件内,一个个找太麻烦了,下过一个excel批量寻找工具 v1.0 官方绿色版,结果试用版只能找5个文件,求无限制的工具,多谢~
回复

使用道具 举报

     
发表于 2016-3-28 11:39 来自手机 | 显示全部楼层
也许写脚本运行是最快的?

— from Sony D5803, Android 5.1.1
回复

使用道具 举报

发表于 2016-3-28 12:26 | 显示全部楼层
具体点,数据的格式是怎样的,是不是类似数据库的表,找到了如何记录结果,如果不要求工具够高大上的话,写个vba很快的,就是low而已,不过你要先说明是搜索怎样的数据,是不是分布在excel的所有sheet中,等等。
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 12:54 来自手机 | 显示全部楼层
后腿 发表于 2016-3-28 12:26
具体点,数据的格式是怎样的,是不是类似数据库的表,找到了如何记录结果,如果不要求工具够高大上的话,写 ...

就是一般的数字文本,工作表就只找sheet1吧,结果就输出在哪个文件的哪一行就行了,但是要能模糊搜索不分大小写
回复

使用道具 举报

发表于 2016-3-28 12:58 | 显示全部楼层
本帖最后由 后腿 于 2016-3-28 13:00 编辑
testalphagogogo 发表于 2016-3-28 12:54
就是一般的数字文本,工作表就只找sheet1吧,结果就输出在哪个文件的哪一行就行了,但是要能模糊搜索不分 ...

好,吃个饭回来写
忘了问了是不是规整的格式,比如第一行有header,没有特别的格式,没有合并单元格,可以当成一个数据表来使用的?执行效率上有区别
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 14:32 | 显示全部楼层
后腿 发表于 2016-3-28 12:58
好,吃个饭回来写
忘了问了是不是规整的格式,比如第一行有header,没有特别的格式,没有合并单元格,可以 ...

特别的格式应该没有,也没有合并单元格,最好能选择一个文件夹后搜索包括子文件夹内的所有XLS和XLSX文件。多谢~
回复

使用道具 举报

发表于 2016-3-28 15:22 | 显示全部楼层
mark , 参考下, 准备抄脚本
回复

使用道具 举报

发表于 2016-3-28 15:37 | 显示全部楼层
本帖最后由 后腿 于 2016-3-28 15:39 编辑
testalphagogogo 发表于 2016-3-28 14:32
特别的格式应该没有,也没有合并单元格,最好能选择一个文件夹后搜索包括子文件夹内的所有XLS和XLSX文件 ...

http://pan.baidu.com/s/1gfEs34J
好啦就酱,打开的时候要允许macro,这个表格有自己的自定义菜单,下面有按钮

当然效果很傻,因为每个文件要打开再关闭……因为我不确定如何找到sheet1(因为第一个sheet不一定叫Sheet1,Sheet1也不一定是第一个sheet),如果可以确定的话有更好的方式(或者纯粹是水平不够完成的不够优雅
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 15:48 | 显示全部楼层
后腿 发表于 2016-3-28 15:37
http://pan.baidu.com/s/1gfEs34J
好啦就酱,打开的时候要允许macro,这个表格有自己的自定义菜单,下面有 ...

请问提示“运行时错误13 类型不匹配”是怎么回事?一个目录会出这问题,另一个就没有
回复

使用道具 举报

发表于 2016-3-28 15:50 | 显示全部楼层
testalphagogogo 发表于 2016-3-28 15:48
请问提示“运行时错误13 类型不匹配”是怎么回事?一个目录会出这问题,另一个就没有 ...

啊呀……这个就难搞了,我自己这里测是好的呀,你先把所有excel关掉(进程管理器里面也关掉Excel进程),再试试,还是有问题的话点debug把出错的那行告诉我……
回复

使用道具 举报

发表于 2016-3-28 15:52 | 显示全部楼层
testalphagogogo 发表于 2016-3-28 15:48
请问提示“运行时错误13 类型不匹配”是怎么回事?一个目录会出这问题,另一个就没有 ...

哦不,是你输入要搜索的是什么东西?
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 15:53 | 显示全部楼层
后腿 发表于 2016-3-28 15:52
哦不,是你输入要搜索的是什么东西?

只是数字而已,350010之类的
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 15:56 | 显示全部楼层
后腿 发表于 2016-3-28 15:52
哦不,是你输入要搜索的是什么东西?

又有新错误,查找QL326,显示XX OF YY CHECKED的时候提示运行时错误432,自动化操作时文件名或类名未找到,调试里面是 Set wb = GetObject(arr_seq(i))这行高亮了
回复

使用道具 举报

发表于 2016-3-28 15:58 | 显示全部楼层
testalphagogogo 发表于 2016-3-28 15:53
只是数字而已,350010之类的

我试过数字、中文、英文字母混合都没问题啊……不知道是哪里错了
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 16:00 | 显示全部楼层
testalphagogogo 发表于 2016-3-28 15:56
又有新错误,查找QL326,显示XX OF YY CHECKED的时候提示运行时错误432,自动化操作时文件名或类名未找到 ...

这一个倒是因为我打开了其中一个XLS,估计不能同时读吧。但是上面那个的问题仍然存在
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 16:03 | 显示全部楼层
后腿 发表于 2016-3-28 15:58
我试过数字、中文、英文字母混合都没问题啊……不知道是哪里错了

发现原因了,文件夹里有一个0字节的XLS,把它删掉就可以搜索了!另外再问问ADDRESS这栏是什么意思,搜索到的行数还是次数?
回复

使用道具 举报

发表于 2016-3-28 16:07 | 显示全部楼层
testalphagogogo 发表于 2016-3-28 16:00
这一个倒是因为我打开了其中一个XLS,估计不能同时读吧。但是上面那个的问题仍然存在 ...

嗯,这个工具是写的很粗糙了……
Set wb = GetObject(arr_seq(i)) 上面那行要改成:
If Left(Mid(arr_seq(i), InStrRev(arr_seq(i), "\") + 1), 2) <> "~$" Then
address是行数,列数
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 16:08 | 显示全部楼层
后腿 发表于 2016-3-28 15:58
我试过数字、中文、英文字母混合都没问题啊……不知道是哪里错了

另外能不能把要搜索的内容显示在第一行,文件太多搜索太久的话等搜索完忘记具体搜的哪一个了= =再三感谢~
回复

使用道具 举报

发表于 2016-3-28 16:14 来自手机 | 显示全部楼层
懂vba的话也就是几句代码的事。我记得windows自带的搜索可以搜office文件的内容
回复

使用道具 举报

发表于 2016-3-28 16:22 | 显示全部楼层
testalphagogogo 发表于 2016-3-28 16:08
另外能不能把要搜索的内容显示在第一行,文件太多搜索太久的话等搜索完忘记具体搜的哪一个了= =再三感谢 ...

http://pan.baidu.com/s/1slSlqFV
已更新,之前error13是因为那个工作簿的sheet1是空的,现在可以预防这个问题,不会打开临时文件,会在第一行显示这次搜索的是什么
打开已经打开的工作簿会报错,因为懒所以没优化……
回复

使用道具 举报

     
 楼主| 发表于 2016-3-28 16:24 | 显示全部楼层
后腿 发表于 2016-3-28 16:22
http://pan.baidu.com/s/1slSlqFV
已更新,之前error13是因为那个工作簿的sheet1是空的,现在可以预防这 ...

精神加鹅65535!
回复

使用道具 举报

发表于 2016-3-28 16:34 | 显示全部楼层

等下我智障了……有一部分是从其他东西里面抄过来但是功能有问题
Sub search_files(ByVal fd As Object)
    DoEvents
    If fd.Files.Count > 0 Then
        For Each fl In fd.Files
            If is_excel(fl.Name) Then
                dic_seq.Add fl.Path, Empty
                UserForm1.Caption = "scanning,found:" & dic_seq.Count
            End If
        Next fl
    End If
    If fd.SubFolders.Count > 0 Then
        For Each sbfd In fd.SubFolders
            Call search_files(sbfd)
        Next sbfd
    End If
End Sub

这个函数应该改成这样,如果不改的话原来的功能是“只有不包含子文件夹的文件夹才把它下面的文件计入”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-8-22 07:47 , Processed in 0.101083 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表