2017-04-02 57 views
2

我期望將數據從一個文件保存到另一個月基於月,但如果一個星期在另一個月中部分保存,我仍然希望保存當前星期的數據。這裏的代碼,因爲它代表的正常工作通過省一個月:按月保存以包含週數

'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的建議,從'Date'中減去'Weekday(Date)-1'(或其他任何適合你的星期計劃)並將結果格式化爲'「MMM」'。 – YowE3K

回答

0

數學上使用時,VBA中被認爲-1(與工作表的真實是+1)。

如果工作日(日期)大於日期(日期),則該月應該是上個月;例如dateadd(「m」,-1,Date)。如果它等於或小於一個月的那一天,那麼這個月是當前的月份;例如dateadd(「m」,0,Date)。

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

我用過vbMonday,星期一= 1;星期日VBA功能默認爲星期日= 1.