2016-05-16 113 views
0

我在下面添加了一段代碼。我正在導入每2小時生成一個文件。由於它開始的時間,我需要減去一小時,並將其添加到文件名來導入文件。例如:我想在VBA中減去一小時

文件名_ 「毫米」(月)「DD」(天) 「HH」(小時).txt文件

小時需要被包括前導0,以及。

Dim hour As String 
Dim day As String 
Dim month As String 
Dim project As String 

Set ws = Worksheets("Master") 
Set ws1 = Worksheets("MQL_RAW") 
Set ws2 = Worksheets("BOM") 


file_name = Sheets("Master").Range("F" & rep1).Value 
file_name2 = Sheets("Master").Range("G" & rep1).Value 
output_sheet = Sheets("Master").Range("L" & rep1).Value 
row_number = Sheets("Master").Range("M" & rep1).Value 
hour = Format(Time, "Hh") - Time(1, 0, 0) 
day = Format(Date, "Dd") 
month = Format(Date, "Mm") 
project = Sheets("Master").Range("B2").Value 

LastRow = Cells(ws1.Rows.Count, 10).End(xlUp).Row 

ws1.Activate 
Columns("A:A").Select 
Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Delete Shift:=xlToLeft 

ws.Activate 

aa = file_name2 & Format(Date, "yyyymmdd") & "_" & Format(Time, "Hh") 

With Sheets(output_sheet).QueryTables.Add(Connection:="TEXT;" + file_name + "\" + month + "\" + day + "\" + file_name2 & Format(Date, "yyyymmdd") & "_" & hour & ".txt", Destination:=Sheets(output_sheet).Range("$A$" + row_number)) 
    '.Name = file_name & Format(Date, "yyyymmdd") & "_" & Format(Time, "Hh") 
    .FieldNames = True 
    .RowNumbers = False 

回答

1

使用這樣的事情:

filename = "name_" & Format(Now - TimeSerial(1, 0, 0), "MMDDHH") & ".txt" 

另外,使用這樣的:

Dim reportStart As Date 
reportStart = Now 

在你的代碼的開始,然後當它涉及到保存它最後,只需使用:

filename = "name_" & Format(reportStart, "MMDDHH") & ".txt" 
+0

我可以只用'reportStart,「HH」'?我也在vba可以鏈接到的單元格中獲得正確的小時,​​但是當VBA查看單元格內容時,無論我做什麼,我都沒有使用這個前導0的原因被忽略。所以如果可以對其進行硬編碼以便在VBA中包含前導0,那將更容易。我已經改變了單元格的格式來顯示前導0,但是這在VBA –

+0

** 1中沒有什麼區別。**是** 2。**您需要在VBA中格式化值,而不是在工作表上 - 如果小時在A1,那麼你可以使用'格式(範圍(「A1」),值,「00」)' –

+0

首先感謝你的快速反應。 (「I」&rep1)。值 格式(範圍(「I10」))。值,「我已經嘗試了該代碼並將其加入到代碼中,並且出現」hour = Sheets 00「'這是代碼,我得到以下錯誤**所需的對象**。對不起,如果我是一個noob –