Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 调用;本工作手册;_Vba_Excel - Fatal编程技术网

Vba 调用;本工作手册;

Vba 调用;本工作手册;,vba,excel,Vba,Excel,我试图在模板(硬编码)和每周更改名称的动态报告(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

我试图在模板(硬编码)和每周更改名称的动态报告(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

为什么不直接使用此工作簿。激活?通常不需要指定一个变量来表示内置的,如
ThisWorkbook
,因此这些变量中的其余部分是不必要的,除非您在该过程的其他地方使用它们(根据提供的代码片段,您不需要,所以您不需要它们)

然而,
wkbk
程序有什么意义?如果仅用于激活工作簿,则也不需要这样做


难道不是只有
x.Activate
?另外,如果要向工作簿复制数据或从工作簿复制数据,为什么需要激活工作簿?此工作簿就是运行代码的工作簿。如果您试图引用外部工作簿,则需要另一种引用方式。
Sub wkbk()
   ThisWorkbook.Activate
End Sub
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