2017-04-02 58 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.