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文件。
展开
 我来答
syht2000
高粉答主

2013-08-27 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
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个字符的文件名的差异部分。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式