vba中用dir遍历xls文件时,无法区分xlsx文件。
代码如下:Sub遍历()Filename=Dir(ThisWorkbook.Path&"\*.xls")Dok=k+1Cells(k,1)=FilenameFilenam...
代码如下:
Sub 遍历()
Filename = Dir(ThisWorkbook.Path & "\*.xls")
Do
k = k + 1
Cells(k, 1) = Filename
Filename = Dir
Loop Until Filename = ""
End Sub
得到结果如下:
2011年报表 - 副本.xls
2011年报表.xls
el 工作表.xlsxsdfadsf
el 工作表 - 副本.xlsxsdfadsf
el 工作表 - 副本 (2).xlsxsdfadsf
el 工作表 - 副本 (3).xlsxsdfadsf
新建 Microsoft Excel 工作表.xlsx
也就是说,只要文件包含.xls,dir就遍历出来了,无法区分xls后面是否还有内容,而我想只把xls提出来。
问题:
1、不明白为何写的是“*.xls”,它还要把xlsx也提出来,我在xls后面也没有写*啊?
2、如何才能只提出想要的xls文件。 展开
Sub 遍历()
Filename = Dir(ThisWorkbook.Path & "\*.xls")
Do
k = k + 1
Cells(k, 1) = Filename
Filename = Dir
Loop Until Filename = ""
End Sub
得到结果如下:
2011年报表 - 副本.xls
2011年报表.xls
el 工作表.xlsxsdfadsf
el 工作表 - 副本.xlsxsdfadsf
el 工作表 - 副本 (2).xlsxsdfadsf
el 工作表 - 副本 (3).xlsxsdfadsf
新建 Microsoft Excel 工作表.xlsx
也就是说,只要文件包含.xls,dir就遍历出来了,无法区分xls后面是否还有内容,而我想只把xls提出来。
问题:
1、不明白为何写的是“*.xls”,它还要把xlsx也提出来,我在xls后面也没有写*啊?
2、如何才能只提出想要的xls文件。 展开
1个回答
展开全部
Sub 遍历()
Dim filename As String, k As Integer
filename = Dir(ThisWorkbook.Path & "\*.xls")
Do
'MsgBox LCase(Mid(filename, InStrRev(filename, ".")))
If LCase(Mid(filename, InStrRev(filename, ".") + 1)) = "xls" Then
k = k + 1
Cells(k, 1) = filename
End If
filename = Dir
Loop Until filename = ""
End Sub
追问
利用mid确实可以达到要求,那第一个问题有没有答案呢?
追答
vba用的较少,查了一下msdn上的dir帮助,没有提到这个问题,个人猜测dir函数在查找文件时,当扩展名为3字符时,会忽略掉扩展名超过3个字符的文件名的差异部分。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |