我要查找的单号有几千个,分布在大约300个EXCEL文件里,EXCEL文件名和单号没有联系性(这样只能逐个文件去找了吧)
我的思路是这样的:建立一个三维数组,把所有EXCEL文件里的内容(最多2000行,六列)的内容全部一次性读入数组中,再建立三个FOR循环,第一个FOR逐个处理需查找的单号,第二个FOR逐个读取文件(第一维),第三个FOR在每个文件里逐个对比单号(第二维),符合后,返回第三维,在建立数组读取内容这一步,处理很快,大约五秒钟,但是在返回行号,并根据行号读取数据这一步,相当慢,一个单号大约要处理半秒左右
是不是我的思路有问题,我字典不太会用
代码基本上是这样的:
For h = 2 To ActiveSheet.UsedRange.Rows.Count ' 从第一个单号开始查找
For p = 1 To .FoundFiles.Count '从第一个文件开始查找
Set wb = GetObject(arr(p))
For i = 1 To wb.Sheets(ssheet).UsedRange.Rows.Count '从第一行开始查找
If Cells(h, 2) = dharr1(p, i, 6) Then '如果找到
GetCellValue dharr1, h, i, p '返回所在文件所在行号的相应数据
p = .FoundFiles.Count '并且,第一个单号的查找到此为止,直接进入第二个单号查找
Exit For
End If
Next
Next p '从第二个文件中查找
Next h '开始查找第二个单号
大神们,帮帮忙,谢谢了
我的代码有两个问题,第一个,太慢,第二个,文件数不能太多,否则内存溢出
不知道有没有更快的方法
挨个文件查找的代码我也做过,更慢
VBA 如何遍历文件夹,找到文件,找到单号,引出内容
采用 数组+ files集合 + 字典判断 的方法将 单号 存入字典,循环files名字,用字典判断是否存在或者将 files名字 存入字典,循环 单号,用字典判断是否存在 files集合方法:Sub ShowFileList(ph) Dim fs, f, f1, fc, s Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs....
excel 遍历文件夹 宏命令
1、filesearch法 Sub test3()Dim wb As Workbook Dim i As Long Dim t t = Timer With Application.FileSearch '调用fileserch对象 .NewSearch '开始新的搜索 .LookIn = ThisWorkbook.path '设置搜索的路径 .SearchSubFolders = True '搜索范围包括 LookIn 属性指定的文件夹中的所有子文件夹 .Fi...
VBA遍历多级文件夹对文件中的内容进行查询(dir循环遍历)
先设置一个场景:现在有一个文件夹test,其下有两个子文件夹A,B,A中有一些TXT文本,B中有我们所需要的一个pl脚本,现在我们来开始进行查询取得pl脚本中的内容。Subfindfileway()dim fso,folder,fds,fd '设置变量Dim beginfile '设置最外层文件夹路径Dim folderway'当前路径Dim filename '设置文件...
如何用excel vba按关键字选择性的遍历文件夹搜索文件?
怎样批量提取文件夹下文件名
VBA怎么在文件夹内,提取EXCEL的特定内容?
i = Cells(Rows.Count, 1).End(3).Row Set fso = CreateObject("scripting.filesystemobject")Set myfolder = fso.GetFolder("D:\\a") '引号内填写文件夹a的完整路径 For Each myfile In myfolder.Files If myfile.Name Like "*.xls*" Then Set wb = Workbook.Open(myfile.Path)i = i ...
Excel VBA和文件夹-1.5遍历文件夹并打开
代码执行的思路是首先定位到指定的文件夹,使用VBA的`dir`函数遍历文件夹中的文件。在循环中,`dir`会返回当前找到的文件名,通过判断非空值来控制循环的进行。为了打开文件,需要将文件夹路径与找到的文件名拼接,形成完整的文件路径。具体代码部分,首先定义文件夹路径,然后使用`do while`循环,每次循环...
vba如何判断指定路径的文件夹?
首先将前面的遍历当前文件路径下的文件写成一个函数。接下来是遍历当前路径下所有文件夹,同样将其写成一个函数。只要把上面两个函数进行拼接,那么就可以实现遍历子文件夹中的所有文件以及当前文件夹中的所有文件。但如果子文件夹不止一层,而是很多层,一层套一层该怎么办。这时候就要通过函数嵌套。首先...
如何用vba遍历文件夹里面的子文件并且复制指定数据形成一张新的表格...
尝试用下边代码试试:Sub OpenAndClose()Dim MyFile As String Dim s As String Dim count As Integer MyFile = Dir(文件夹目录 & "*.xlsx")'读入文件夹中的第一个.xlsx文件 count = count + 1 '记录文件的个数 s = s & count & "、" & MyFile Do While MyFile <> ""MyFile...
vba查找文件夹的问题
必须分两步才能完成:第一步查找文件夹,第二步从找到的文件夹下找文件。如果你想要找到含有AE变量的所有文件夹里文件名包含AF变量的文件,要用两重循环才行
改变vba遍历文件夹的顺序
1、首先使用VBA中的函数或对象获取文件夹下的所有文件和文件夹。2、其次将获取到的文件和文件夹列表保存在数组、集合或自定义数据结构中,使用自定义的排序方法对其进行排序。3、最后按照经过自定义排序的顺序依次处理每个文件或文件夹,根据需求选择适当的遍历方式,如使用循环、递归等,逐个访问文件和文件...