宏使用剪贴板中的名称来创建新选项卡

时间:2014-08-08 09:02:49

标签: excel vba excel-vba

我有一个每月运行一次的报告,想要创建一个主工作簿,在每个月运行报告时为其创建一个新选项卡。

幸运的是,报告中有报告运行的月份,因此创建了一个宏,从隐藏的工作表中抓取日期并将其粘贴到工作表中作为概念证明。

Sub Import_Report()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

master = Sheets("Instructions").Range("C13").Value
report = "xxx.xlsx"
report_filepath = "xxx\xxx\xxx.xlsx"

Workbooks.Open Filename:=(report_filepath)

    Windows(report).Activate
    Sheets("Info").Visible = True
    Sheets("Info").Activate
    Range("B5").Copy
    Windows(master).Activate
    Sheets("Test").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
    Windows(report).Close

End Sub

如何修改它以便它使用它所提取的名称然后使用它来创建基于该名称的新标签?

1 个答案:

答案 0 :(得分:0)

您可以将表格分配给对象,这样您就不需要知道其名称。

以下示例将创建一个新工作表,然后将其重命名为“我的新工作表”

Sub main()

Dim WB As Workbook

Set WB = ThisWorkbook

Dim WS As Worksheet

Set WS = WB.Worksheets.Add

WS.Name = "My New Sheet"

End Sub

在尝试从中获取数据之前,引用这样的工作表和工作簿需要一些使特定工作表或工作簿处于活动状态的麻烦,您可以直接引用工作表。即使工作表被隐藏,它也可以工作,因此您的秘密工作表无需显示。

<强>更新

我没有测试过以下代码,但是如果我阅读了更新的代码示例,那么应该做同样的事情。只是阅读问题,但这并没有回答。但是,如果您在创建表时尝试将表单重命名为变量,则可以按照您在评论中的建议重新命名。

Sub Main()

Dim Master As Workbook

Dim Report As Workbook
Dim File As String

Set Master = ThisWorkbook

File = "xxx\xxx\xxx.xlsx"

Set Report = Workbooks.Open(Filename:=File)

Report.Worksheets("Info").Range("B5").Copy

Master.Worksheets("Test").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Report.Close

End Sub