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

Enr*_*uso 7 excel vba excel-vba

我是编码的新手,我正在尝试执行以下操作;

跟踪工作簿包含从输入工作簿中获取的项目信息.我正在尝试打开输入工作簿复制项目信息表上的所有数据,并将其过去跟踪工作簿的项目信息表.这是我在下面的编码

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
Run Code Online (Sandbox Code Playgroud)

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

小智 8

代码的问题在第二行.

ActiveSheet("Project Info").Select
Run Code Online (Sandbox Code Playgroud)

这应该是,

ActiveWorkbook.Sheets("Project Info").Select
'alternative
Worksheets("Project Info").Select
Run Code Online (Sandbox Code Playgroud)

正如我的评论中所述,请参阅如何避免在Excel VBA宏中使用Select以获取更多方法,以避免依赖select和activate来实现目标.该ActiveWorkbook属性,Application.ActiveWindow财产,ActiveSheet属性ActiveCell属性只是referrencing的不可靠的方法.

  • 很好的方式指出一个主要问题,而不是操纵原始代码超过需要:)*需要是相对的,当然:)* (3认同)

Sco*_*man 4

编写 VBA 代码时,最好使用变量限定所有对象并直接使用对象本身。

尝试这个:

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.
Run Code Online (Sandbox Code Playgroud)

我还想知道您是否真的想复制工作表的每个单元格,还是只想复制包含实际数据的单元格?

如果您只想要包含实际数据的单元格,您可以使用wsC.UsedRange.Copy wsP.Range("A1") “注释” - 这也可能有问题,但我会让您告诉我是否有问题:)