我需要每月复制一些数据,将其粘贴到电子表格中,然后将其另存为更新日期的新文件。我需要宏来查看A6是否为空,然后从A6中选择所有数据,我认为这是用If Not语句完成的。
完成后,我需要打开一个以" Filepath / mmyy Filename.xls"
格式保存的电子表格我需要打开的表格将是最后几个月所以我需要它来选择那个月,然后是yy格式的年份。
我还需要它在一定范围内清除工作表,然后粘贴第一个工作簿中的数据,然后使用更新日期另存为mmyy与此月份日期。
如何设置代码以基于mmyy打开文件,然后另存为?这一切都可以在我打开的IF语句中完成吗?
Sub Test()
Dim wksht As Worksheet
Dim rng As Range
Set wksht = Sheets("Birse CH")
Set rng = wksht.Range("A5")
If Not IsEmpty(rng.Offset(1, 0)) Then
Set rng = Range(rng.End(xlDown).Offset(0, 14), rng.Offset(1, 0))
Selection.Copy
'opening workbook
Workbooks.Open Filename:="H:\Finance\CBF\Invoices\Monthly Invoicing Summary\" & Year(Date) & "\ASM\" & (Now(mm) - 1) & Now(yy) & " ASM CBF Reg Summary.xlsx"
Selection.Paste
End If
End Sub
答案 0 :(得分:1)
您正在寻找的是Format
function。
Format(Now, "mmyy")
在撰写本文时返回0914
。
但是,看起来你想从今天的日期减去一个月。这样就可以了:
Format(DateSerial(Year(Now), Month(Now) - 1, 1), "mmyy")
应该替换不会编译的(Now(mm) - 1) & Now(yy)
,因为那是not how Now
works。
要SaveAs
和Close
,最简单的方法是首先设置对您正在打开的工作簿的引用:
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="...somewhere...")
'... do stuff to the workbook
wb.SaveAs Filename:="...somewhere else..."
wb.Close