我有一个每月运行一次的报告,想要创建一个主工作簿,在每个月运行报告时为其创建一个新选项卡。
幸运的是,报告中有报告运行的月份,因此创建了一个宏,从隐藏的工作表中抓取日期并将其粘贴到工作表中作为概念证明。
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
如何修改它以便它使用它所提取的名称然后使用它来创建基于该名称的新标签?
答案 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