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

我想打开并复制文件TFM_20150224_084502中的表单,并且此文件每天有不同的date和时间。 我已经开发代码,直到打开date格式,但我不能开发与时间格式打开它。

它的代码是什么?

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 

当你把代码发布到你的文章中时,似乎一些换行符已经消失,但是假设你知道这一点,我认为你遇到的主要问题是搞清楚你想打开的文件的名字?

VBA Dirfunction允许您search文件夹中的文件,并让您在search中包含通配符。 我已经将这个函数包含在你的子文件中,并且在我的计算机上用类似命名的文件(虽然没有复制表格)对它进行了testing,然后打开表格:

 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去search文件中符合string的文件,其中星号是通配符。 我之所以在xls之后加上星号,是因为在新版本的Office中,文件可能有扩展名,例如xlsxxlsm 。 我还在目录string的末尾添加了一个反斜杠,因为您必须在文件名之前包含它。

我还在你打开的工作簿上添加了一个if-clause,以防没有find适合search的文件。

请注意,这个子只会做你想要的,只有一个文件为每个date生成。 如果你想循环遍历所有包含给定date的文件,我build议看看这篇文章 , 这个文章解释了如何遍历一个文件夹中的所有文件,修改提供给你的需要的macros应该是相当平凡。