2017-04-02 6 views
2

月ごとに1つのファイルから別のファイルにデータを保存することを検討していますが、1週間が別の月の途中にある場合は、今週のデータを保存します。それは月単位で保存するための罰金働くスタンドとしてここにコードです:月に保存して週番号を含める

VBAで
'Copy Data to Workbook Weekly Monthly 

Rows("2:2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 

Application.DisplayAlerts = True 

FileMonth = Month(Date) 
StrFileMonth = Format(Date, "MMM") 

Filepath = "F:\Customer Services\UK Order File\Monthly Figures\" & StrFileMonth & "\" & "UK_Orders_Monthly.xlsm" 

Workbooks.Open (Filepath), _ 
UpdateLinks:=True 

Worksheets("Data").Activate 
Range("A1").End(xlDown).Offset(1, 0).Select 
Selection.PasteSpecial Paste:=xlPasteValues 
+0

Day(Date)とWeekDay(Date)を使用して小学校の数学を行う必要があるようです。 – Jeeped

+0

合意しました。保存する月を指定するためのテーブルを作成しましたが、保存するファイルパスを参照する方法 –

+0

テーブルを作成して正しい月を指定すると、 'strFileMonth'の代わりにその値を使用してください。さもなければ、@Jeepedが提案したように、 'Weekday(Date)-1'(またはあなたの週の体系に合っているもの)を' Date'から減算し、結果を '' MMM "'としてフォーマットします。 – YowE3K

答えて

0

考えられている-1数学的に(+1であるワークシートのTRUEに反し)を使用したとき。

曜日(日付)が曜日(日付)より大きい場合、月は先月でなければなりません。例えばdateadd( "m"、-1、Date)。それが月の日数以下の場合、その月は現在の月です。例えばdateadd( "m"、0、Date)。

StrFileMonth = Format(dateadd("m", weekday(date, vbmonday) > day(date), date), "mmm") 

月曜日が1の場合はvbMondayを使用しました。 WeekDay VBA関数のデフォルトはSunday = 1になります。

関連する問題