2016-05-16 2 views
0

私のコードのスニペットを以下に追加しました。私は2時間ごとに生成されるファイルをインポートしています。それが始まった時間のために私はマイナス1時間を必要とし、それをファイル名に追加してファイルをインポートします。例えば:私はVBA内のマイナス1時間を望みます

ファイル名_ "ミリメートル"(月)"DD"(日) "HH"(時間)の時間が必要

は、先頭の0を同様に含むことが.txtで。

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であれば、 'Format(Range(" A1 ")。Value、" 00 ")' –

+0

を使用します。私はそのコードを試して、私のコードに埋め込みました。エラー時には 'hour = Sheets(" Master ")となり、範囲(" I "&rep1).Value フォーマット(範囲(" I10 ")) 00 "'それはコードであり、私は以下のエラーが出る**必要なオブジェクト**。私がノブであるのなら、ごめんなさい –

関連する問題