拨打“ThisWorkbook”

时间:2017-05-09 16:31:13

标签: excel vba excel-vba

我正在尝试在模板(硬编码)和每周更改名称的动态报告(ThisWorkbook)之间切换。我正在努力调用变量x将焦点带到工作簿。我正在复制模板公式并将它们粘贴到动态报告中。

Sub wkbk()
   Dim x As Excel.Workbook
   Set x = ThisWorkbook
   Dim pth As String
   pth = x.FullName
   Windows(pth).Activate
End Sub

这是我正在使用的VBA代码:

Windows("BBU_CMD_TEMPLATE.xlsx").Activate
Cells.Select
Selection.Copy
Windows(pth).Activate
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste

1 个答案:

答案 0 :(得分:3)

为什么不使用ThisWorkbook.Activate?通常不需要指定一个变量来表示像ThisWorkbook这样的内置函数,所以其他变量是不必要的,除非你在那个程序的其他地方使用它们(从提供的代码片段开始,你不是,所以你不需要它们。)

Sub wkbk()
   ThisWorkbook.Activate
End Sub

然而,wkbk程序有什么意义?如果仅激活工作簿,则不需要there are plenty of reasons to avoid Activate

Sub CopySheetFromTemplateToThisWorkbook()
Dim tmplt As Workbook
On Error Resume Next
Set tmplt = Workbooks("BBU_CMD_TEMPLATE.xlsx")
If tmplt Is Nothing Then
    MsgBox "Template file needs to be open..."
    Exit Sub
End If
On Error GoTo 0
With ThisWorkbook    
    tmplt.ActiveSheet.Copy After:=.Sheets(.Sheets.Count)
End With
End Sub