根据当前月份将当前月份表格拉到新工作簿

时间:2015-04-24 16:57:53

标签: vba excel-vba excel

好的我目前有一个数据库可以按月跟踪数据,因此每个月都有一个新的标签或工作表。我有一个我用来处理这些数据的第二个工作簿。我有下面的当前代码并且它工作得很好唯一的问题是我将不得不进入并改变它每月拉动的表单。 "表格(" 4月15日)。选择"。我的问题是;是否有一个方程式可以用来拉当前月份的工作表?

当前代码

   Range("A1").Select

'
    Workbooks.Open Filename:= _
        "X:\GLOBLOPS\TRADE_PROCESSING\Procedures\Corporate Action\Full Call\Full Calls Tracker.xls"

    Sheets("APRIL 15").Select
    ActiveWindow.SmallScroll Down:=-27
    Columns("A:I").Select
    Selection.Copy
    Windows("Copy of CorpAct_freeDeliver 3.13.15.xls").Activate
    ActiveWindow.SmallScroll Down:=-12
    ActiveSheet.Paste
    Windows("Full Calls Tracker.xls").Activate
    ActiveWindow.Close
   Windows("Copy of CorpAct_freeDeliver 3.13.15").Activate
   Sheets("Call Tracker").Select

1 个答案:

答案 0 :(得分:1)

如果您总是在当月工作,并且所有数据都使用完整的月份名称和两位数年份进行格式化,则可以替换此行:

Sheets("APRIL 15").Select

这一个:

Sheets(ucase(format(now(), "mmmm YY"))).Select

如果您需要在时间上有更多的灵活性,可以使用代码中其他位置的日期变量替换now()。如果选项卡名称格式使用较长月份名称的某些缩写,则您的建议也可能存在问题。

为了改善整体代码,需要添加的内容是阅读:How to avoid using Select in Excel VBA macros

修改

是的,您可以使用该范围。有很多方法可以将这些信息输入您的程序。它可能会让您感到困惑,因为您仍然使用激活和选择,并且很难跟踪每张纸。我可能会改为:

Sub test()

    Dim codeWorkbook As Workbook
    Dim dataWorkbook As Workbook
    Dim dateRange As Range
    Dim sheetName As String

    Set codeWorkbook = ThisWorkbook
    Set dataWorkbook = Workbooks.Open(Filename:="X:\GLOBLOPS\TRADE_PROCESSING\Procedures\Corporate Action\Full Call\Full Calls Tracker.xls")
    Set dateRange = codeWorkbook.sheets(1).Range("WHERE_EVER_DATE_IS")
    sheetName = UCase(Format(dateRange.Value, "mmmm YY"))

    dataWorkbook.Sheets(sheetName).Columns("A:I").Copy Destination:=codeWorkbook.Sheets(1).Range("A1")
    'change the sheet and/or the range to what you need it to be
    dataWorkbook.Close False

End Sub