excel vba基于单调递增的名字打开文件和复制文件

我正在编写一个Excel表,它将处理以一系列以文件名格式存储的日志文件的复制数据:yyyy dd Mmmm.xls(即“2015 01 November.xls”)。

我允许用户提供开始date和结束date作为单元格值并将其读入VBA(轻松完成)

SDate = Range("B1").Value EDate = Range("B2").Value 

我可以使用Do Until循环在date的另一列创build一个列表:

 Range("G1").Select NextDate = SDate Do Until NextDate > EDate ActiveCell.Value = NextDate ActiveCEll.Offset(1,0).Select NextDate = NextDate + 1 Loop 

我遇到的问题是build立一个文件名,以便在循环内我可以用给定的名称打开文件(如:yyyy dd Mmmm *。*,因为我最近将该表从xls文件转换为xlsm文件他们周期性地在文件名的末尾加上首字母)。 使用:

 Workbooks.Open Filename:= "X:DirectoryInfo\2015 12 December\" & NextDate & "*.*" 

在我的Do循环给我一个错误,因为excel试图打开一个名为“11/1/2015 *。*”的文件不存在。 如何将文件的名称更改为正确的格式? 我还需要在文件前面根据需要更改目录以匹配文件名格式(谢天谢地,目录总是与文件名格式相同,但月份以“yyyy mm Mmmm”forms显示两次)

如果我们使用如下代码:

 Sub BenA() Dim SDate As Date, EDate As Date Dim NextDate As Date, rng As Range SDate = Range("B1").Value EDate = Range("B2").Value Set rng = Range("G1") NextDate = SDate Do Until NextDate > EDate rng.Value = "C:\TestFolder\" & Format(NextDate, "yyyy dd mmmm") & ".xls" Set rng = rng.Offset(1, 0) NextDate = NextDate + 1 Loop End Sub 

我们的文件打开表格将如下所示:

在这里输入图像说明

这将使Workbooks.Open语句更容易。