根据日期打开文件,粘贴数据,另存为新日期并关闭

时间:2014-09-16 07:50:46

标签: excel vba excel-vba excel-2007

我需要每月复制一些数据,将其粘贴到电子表格中,然后将其另存为更新日期的新文件。我需要宏来查看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

1 个答案:

答案 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

SaveAsClose,最简单的方法是首先设置对您正在打开的工作簿的引用:

Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="...somewhere...")
'... do stuff to the workbook
wb.SaveAs Filename:="...somewhere else..."
wb.Close