如何在excel vba中打开格式日期和时间的文件

时间:2015-02-24 07:16:20

标签: excel vba excel-vba

我想在文件TFM_20150224_084502中打开并复制工作表,此文件每天都有不同的日期和时间。我已经开发了代码,直到打开日期格式,但我无法开发以时间格式打开它。

它的代码是什么?

Sub OpenCopy ()

Dim directory As String, fileName As String, sheet As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False

directory = "z:\FY1415\FI\Weekly Report\Astry"
fileName = "TFM_" & Format(Date, "yyyymmdd") & ".xls"

Workbooks.Open "z:\FY1415\FI\Weekly Report\Astry\" & "TFM_" & Format(Date, "yyyymmdd") & ".xls"
Sheets("MSP").Copy After:=Workbooks("Generate Report 2.xlsm").Sheets("PlanOEE")
ActiveSheet.Name = "MSP"

End sub

1 个答案:

答案 0 :(得分:1)

当您将代码发布到帖子中时,似乎某些换行符已经消失,但假设您已经意识到这一点,我认为您遇到的主要问题是找出要打开的文件的名称?

VBA Dir-function允许您搜索文件夹中的文件,并允许您在搜索中包含通配符。我已经在你的sub中包含了这个函数,并在我的计算机上使用类似命名的文件进行了测试(尽管没有复制工作表),它打开了工作表:

Sub OpenCopy()

  Dim directory As String, fileName As String, sheet As Worksheet

  Application.ScreenUpdating = False
  Application.DisplayAlerts = False

  directory = "z:\FY1415\FI\Weekly Report\Astry\"
  fileName = Dir(directory & "TFM_" & Format(Date, "yyyymmdd") & "*.xls*")

  If fileName <> "" Then
    With Workbooks.Open(directory & fileName)
      .Sheets("MSP").Copy After:=Workbooks("Generate Report 2.xlsm").Sheets("PlanOEE")
    End With
    ActiveSheet.Name = "MSP"
  End If

  Application.ScreenUpdating = True
  Application.DisplayAlerts = True
End Sub

与查找文件名相关的行是,正如您可能看到的那样:

fileName = Dir(directory & "TFM_" & Format(Date, "yyyymmdd") & "*.xls*")

我只是简单地使用Dir来搜索在parantheses中拟合字符串的文件,其中星号是通配符。我在xls之后加入星号的原因是因为在较新版本的办公室中文件可能会有xlsxxlsm等扩展名。我还在目录字符串的末尾添加了一个反斜杠,因为你不得不在文件名之前包含它。

我还在你打开的工作簿中添加了一个if子句,以防找不到适合搜索的文件。

请注意,只有每个日期只生成一个文件,此子目录才会执行您想要的操作。如果你想循环遍历包含给定日期的所有文件,我建议你在这里查看this post,这解释了如何遍历文件夹中的所有文件,修改那里提供的宏以适合你的需要应该是相当微不足道的。