我正在编写一张excel表,用于处理以一系列日常日志复制数据,这些日志以文件名格式存储:yyyy dd Mmmm.xls(即“2015 01 November.xls”)。
我允许用户提供一个开始和结束日期作为单元格值并将其读入VBA(轻松完成)
SDate = Range("B1").Value
EDate = Range("B2").Value
我可以使用Do Until循环在日期的另一列中创建一个列表:
Range("G1").Select
NextDate = SDate
Do Until NextDate > EDate
ActiveCell.Value = NextDate
ActiveCEll.Offset(1,0).Select
NextDate = NextDate + 1
Loop
我遇到的问题是构建一个文件名,以便在循环内部我可以打开具有给定名称的文件(As:yyyy dd Mmmm *。*,因为我最近将该工作表从xls文件转换为一个xlsm文件,它们定期在文件名末尾有首字母)。使用:
Workbooks.Open Filename:= "X:DirectoryInfo\2015 12 December\" & NextDate & "*.*"
在我的Do循环中的给出了一个错误,因为excel尝试打开一个名为“11/1/2015 *。*”的文件,该文件不存在。如何将文件名更改为正确的格式?我还需要在文件前面根据需要更改目录以匹配文件名格式(谢天谢地,目录总是与文件名格式相同,但月份以“yyyy mm Mmmm”形式显示两次)
答案 0 :(得分:0)
如果我们使用以下代码:
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
语句更容易。