我想使用vba代码将单元格从一个工作簿复制到活动工作簿

我想使用vba代码将单元格从一个工作簿复制到活动工作簿,vba,excel,Vba,Excel,dashboard是我从中复制的工作表的名称,Class1是我粘贴到活动工作簿上的工作表 我获取的错误下标超出了当前代码中y.sheetsClass1…的范围 Sub Hungry4Gages() Dim x As Workbook Dim y As Workbook '## Open both workbooks first: Set x = Workbooks.Open("C:\Users\dguitron\Documents\Belize and Sam Project\Class 1

dashboard是我从中复制的工作表的名称,Class1是我粘贴到活动工作簿上的工作表


我获取的错误下标超出了当前代码中y.sheetsClass1…的范围

Sub Hungry4Gages()
Dim x As Workbook
Dim y As Workbook

'## Open both workbooks first:

Set x = Workbooks.Open("C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\run_10296500.xlsm")

Set y = ActiveWorkbook

'Now, copy what you want from x:

x.Sheets("dashboard").Range("D17").Copy

'Now, paste to y worksheet:

y.Sheets("Class1").Range("A1").PasteSpecial 

'Close x:

x.Close

End Sub
Workbooks.Open语句打开一个工作簿,该工作簿将成为活动工作簿。因此,x和y都指向同一工作簿

因此,您需要切换顺序:

Set x = Workbooks.Open("C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\run_10296500.xlsm")

Set y = ActiveWorkbook
正如Jeeped所指出的,如果宏位于要将y设置为的工作簿中,则可以使用Set y=ThisWorkbook,这样顺序就不重要了,或者可以在任何地方使用ThisWorkbook,而不是在其他地方使用y


就个人而言,我仍然会先将引用设置为静态,因为没有更好的词,工作簿,然后打开其他工作簿并设置它们的对象引用-但这只是我个人的偏好,基于我对所做工作的思考方式

在当前代码中,您正在执行

Sub Hungry4Gages()
Dim x As Workbook
Dim y As Workbook

'## Open both workbooks first:

Set x = Workbooks.Open("C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\run_10296500.xlsm")

Set y = ActiveWorkbook

'Now, copy what you want from x:

x.Sheets("dashboard").Range("D17").Copy

'Now, paste to y worksheet:

y.Sheets("Class1").Range("A1").PasteSpecial 

'Close x:

x.Close

End Sub
Workbooks.Open语句打开一个工作簿,该工作簿将成为活动工作簿。因此,x和y都指向同一工作簿

因此,您需要切换顺序:

Set x = Workbooks.Open("C:\Users\dguitron\Documents\Belize and Sam Project\Class 1\run_10296500.xlsm")

Set y = ActiveWorkbook
正如Jeeped所指出的,如果宏位于要将y设置为的工作簿中,则可以使用Set y=ThisWorkbook,这样顺序就不重要了,或者可以在任何地方使用ThisWorkbook,而不是在其他地方使用y


就个人而言,我仍然会先将引用设置为静态,因为没有更好的词,工作簿,然后打开其他工作簿并设置它们的对象引用-但这只是我个人的偏好,基于我对所做工作的思考方式

无需打开源工作簿即可更快地获取值,方法是:


无需使用以下方法打开源工作簿,即可更快地获取值:


在做你的x组之前先做你的y组。@YowE3K-完全错过了。你应该回答@Jeeped-刚写完,我先发了评论,这样人们就不会去寻找其他问题了。在你做你的x集之前先做你的y集。@YowE3K-完全没有做到这一点。你应该回答@Jeeped-刚刚完成我先发布了注释,这样人们就不会在切线上寻找其他问题。如果代码在源工作簿中,则可以将其设置为y=ThisWorkbook。无论如何,这是个好球!如果代码在源工作簿中,则可以将其设置为y=ThisWorkbook。无论如何,这是个好球!