excel vba基于单调增加的名称打开文件和复制文档

时间:2015-12-03 14:56:58

标签: excel vba excel-vba

我正在编写一张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”形式显示两次)

1 个答案:

答案 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

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

enter image description here

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