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
语句更容易。