Excel 将数据从一个工作表拉到另一个工作表
我希望有人能帮助我,因为我尝试了许多其他网站的建议,但找不到解决办法 我有两本作业本。其中一个包含要复制到另一个的字段列表。到目前为止看起来非常简单,但当我尝试将工作表名称指定给变量时,它不会存储它,因此我以后无法返回该工作表 我给你举个例子Excel 将数据从一个工作表拉到另一个工作表,excel,excel-2010,vba,Excel,Excel 2010,Vba,我希望有人能帮助我,因为我尝试了许多其他网站的建议,但找不到解决办法 我有两本作业本。其中一个包含要复制到另一个的字段列表。到目前为止看起来非常简单,但当我尝试将工作表名称指定给变量时,它不会存储它,因此我以后无法返回该工作表 我给你举个例子 Function getActiveWBName() getActiveWBName = ActiveWorkbook.NAME End Function Dim homeWB Sub pull_data() Set homeWB =
Function getActiveWBName()
getActiveWBName = ActiveWorkbook.NAME
End Function
Dim homeWB
Sub pull_data()
Set homeWB = Workbooks(getActiveWBName)
homeWB.Activate
Call Update_List
End Sub
Sub Update_List()
Workbooks.Open Filename:=FullFilePath, UpdateLinks:=3
Sheets("List").Activate
Cells.Select
Selection.Copy
ActiveWorkbook.Close
homeWB.Activate
Sheets("List").Activate
Range("A1").Select
Selection.Paste
End Sub
进入homeWB后,在子更新列表中激活,它返回运行时错误424-需要对象。
我做错了什么
我希望保留返回活动工作表名称的函数
有人能帮我吗?你不必走那条路:)我不确定你指的是哪个网站,但你应该避免使用。选择和。激活。看
您的代码可以重新编写为(根据需要进行更改)
由于homeWB
未声明为公共变量,也未将其传递到Update\u List
子例程,因此出现了一个需要对象的错误
您可以通过将变量homeWB
传递到Update\u列表
子例程来修复此问题:
Sub pull_data()
Set homeWB = Workbooks(getActiveWBName)
homeWB.Activate
Call Update_List(homeWB)
End Sub
Sub Update_List(homeWB as Workbook)
Workbooks.Open Filename:=FullFilePath, UpdateLinks:=3
Sheets("List").Activate
Cells.Select
Selection.Copy
ActiveWorkbook.Close
homeWB.Activate
Sheets("List").Activate
Range("A1").Select
Selection.Paste
End Sub
但是,我会听从Siddhart Rout上面关于使用Activate
和Select
的建议,这应该避免99%的时间。尝试下面的代码
Dim homeWB As Workbook
Const FullFilePath = "C:\Users\Santosh\Desktop\ssss.xlsx" ' specify your path here
Sub pull_data()
Set homeWB = ThisWorkbook
Call Update_List
End Sub
Sub Update_List()
Dim wkb As Workbook
Set wkb = Workbooks.Open(Filename:=FullFilePath, UpdateLinks:=xlUpdateLinksAlways)
wkb.Sheets("List").Cells.Copy homeWB.Sheets("List").Range("A1")
wkb.Close
End Sub
桑托什。这是你第二次发布类似于我的答案:)我相信这篇文章也会被删除。祝meNo好运一个正在删除此帖子:)只是想告诉你,再次发布相同的答案(或其变体)是没有意义的;)homeWB必须是公共的吗?如果您显式地将变量作为Update\u List
函数的必需参数传递,则为否。如果您不希望在子例程之间传递变量值,则为是,您必须声明为公共变量。我对Update\u List
sub的调用方式进行了修改。在诸如调用更新列表(homeWB)
之类的子例程之间传递对象变量时没有错误。
Dim homeWB As Workbook
Const FullFilePath = "C:\Users\Santosh\Desktop\ssss.xlsx" ' specify your path here
Sub pull_data()
Set homeWB = ThisWorkbook
Call Update_List
End Sub
Sub Update_List()
Dim wkb As Workbook
Set wkb = Workbooks.Open(Filename:=FullFilePath, UpdateLinks:=xlUpdateLinksAlways)
wkb.Sheets("List").Cells.Copy homeWB.Sheets("List").Range("A1")
wkb.Close
End Sub