错误 – VBA对象不支持此属性或方法

我是新来的编码,并试图执行以下;

跟踪工作簿包含从input工作簿获取的项目信息。 我试图打开input工作簿复制项目信息表上的所有数据,并在跟踪工作簿的项目信息表中将其过去。以下是我的代码

Sub GetProjectInfo() Workbooks.Open Filename:="\\ccprd02\workgrp2\AM\SPIM Input.xlsm" ActiveSheet("Project Info").Select Cells.Select Selection.Copy Windows("SPIM Tracking Sheet.xlsm").Activate ActiveSheet("Project Info").Select Cells.Select Range("A1").Activate ActiveSheet.Paste Range("A1").Select Windows("SPIM Input.xlsm").Activate ActiveWindow.Close End Sub 

它正在打开文件,但似乎在复制数据之前停止。 我似乎无法查明错误。 我已经search了几个类似的问题,但没有任何运气。 我的编码有问题吗?

你的代码的问题在第二行。

 ActiveSheet("Project Info").Select 

这应该是,

 ActiveWorkbook.Sheets("Project Info").Select 'alternative Worksheets("Project Info").Select 

正如我的评论所述,请参阅如何避免使用Excel中的selectVBAmacros来获取更多的方法来摆脱依靠select和激活来实现您的目标。 ActiveWorkbook属性 , Application.ActiveWindow属性 , ActiveSheet属性和ActiveCell属性只是不可靠的referrencing方法。

在编写VBA代码时,最好通过限定具有variables的所有对象并直接与对象本身一起工作。

尝试这个:

 Dim wbC as Workbook Dim wbP as Workbook Dim wsC as Worksheet Dim wsP as Worksheet Set wbP = Workbooks("SPIM Tracking Sheet.xlsm") Set wsP = wbP.Sheets("Project Info") Set wbC = Workbooks.Open (Filename:="\\ccprd02\workgrp2\AM\SPIM Input.xlsm") Set wsC = wbC.Sheets("Project Info") wsC.Cells.Copy wsP.Range("A1") wbC.Close False 'assuming you want to close the workbook you opened. 

我也想知道,如果你真的想复制工作表的每一个单元格 ,或者你只是想复制单元格与实际数据

如果你只想使用实际数据的单元格,你可以使用wsC.UsedRange.Copy wsP.Range("A1") 注意 – 这可能也有问题,但是我会让你告诉我是否它:)