2015-02-24 21 views
0

我想要打開和複製TFM_20150224_084502文件中的表單,並且此文件每天的日期和時間不同。我開發了代碼直到打開日期格式,但我無法開發以時間格式打開它。如何在Excel中打開帶格式日期和時間的文件vba

它的代碼是什麼?

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 
+0

給你的文件名稱樣本? – 2015-02-24 07:30:42

+0

@JLILIAman這篇文章的開頭部分有一個文件名示例(TFM_20150224_084502) – eirikdaude 2015-02-24 07:43:08

+0

請接受最近編輯的問題,以便您的代碼得到適當的格式以供SO的其他用戶閱讀。非常感謝你。 – 2015-02-24 07:45:55

回答

1

看來,當你發佈的代碼到您的文章一些換行符已經消失,但假設你是意識到這一點,我認爲你有主要的問題是找出你想要的文件的名稱打開?

VBA Dir-function允許您搜索文件夾中的文件,並允許在搜索中包含通配符。我已經包含在子此功能,並具有類似名稱的文件測試它在我的電腦上(雖然沒有紙張的複印),它打開了表:

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做文件擬合括號,其中星號是通配符字符串裏面的搜索。我之所以在xls之後加上星號也是因爲在較新版本的Office中,文件可能具有擴展名,例如xlsxxlsm。我還在目錄字符串的末尾添加了一個反斜槓,因爲您必須在文件名之前包含它。

如果找不到符合搜索條件的文件,我還在您打開的工作簿上添加了if-子句。

請注意,這個子只會做你想做的事,只要有一個文件爲每個日期生成。如果你想循環遍歷包含給定日期的所有文件,我建議看一看SO上的this post,它解釋瞭如何循環訪問文件夾中的所有文件,修改提供的那些宏以適應你的需求應該是公平的不重要的。

相關問題