vba 按顺序打开文件夹下含特定字符的工作簿

据说workbooks.open不能用通配符。
文件夹里都是月报表,但不一定每月都有。
我知道:
1、文件的路径,Z:\2006\
2、文件的大致名称:是严格按年月日来命名的,格式是2006-08-**.xls 或者2006-08-**.xlsx
3、每个月最多只有一个文件,也就是只有一个2006-08-**.xls(或者2006-08-**.xlsx)
4、字符串,整形变量和循环(for i=1 to X next i)操作的基本规则
问题是:怎么用按顺序打开它们?中间不报错
http://pan.baidu.com/s/1hqu5C4c

如果能确保文件夹下类似2006-08-**.xls 或者2006-08-**.xlsx的文件只有一个,可用把如下代码

Sub xx()
Dim yy, mm, pth, fn, i
yy = [f3]
pth = "D:\" & yy & "\"
For i = [f4] To 12
    fn = Dir(pth & yy & "-" & Format(i, "00") & "-*.*")
    If fn <> "" Then
        Application.Workbooks.Open pth & fn
        '在此添加操作代码
        Application.Workbooks(fn).Close True '如要手动关闭文件删除本行
    End If
Next
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-13
Sub OpenAllExcel()
    Dim fPath As String, fName As String
    
    fPath = "Z:\2006\"
    fName = Dir(fPath & "*.xls")
    Do While fName <> ""
        Application.Workbooks.Open fPath & fName
        '这里可以添加对每个打开文件的操作。
        fName = Dir
    Loop
End Sub

正常来说,如果你的文件名那么有规律,程序给出的就是按照日期排序的文件,不用特意再排序了。

如果有特殊情况,可以再使用排序。排序后再依次打开文件。

本回答被网友采纳
第2个回答  2015-06-12
把文件名放到字典里,变成数组后,就可以用like比较了吧追问

那请给我2000到2014每月最后一天的辞典,并告诉怎么用好吗?很初级的读码能力。谢谢!

追答

你的文件我没太看懂啊。