Vba 对象在打开工作簿时不支持此属性错误
我有两本作业本。工作簿1是我的目标工作簿(DWB),工作簿2是我的原始工作簿(OWB)。我的OWB在网络文件夹中 我正在尝试将OWB的所有内容复制到DWB 下面是我迄今为止尝试过的代码。但在下面的一行中,我得到了一个错误 对象不支持此属性 设置OWB=Workbooks.Open(文件名:=filepath)Vba 对象在打开工作簿时不支持此属性错误,vba,excel,Vba,Excel,我有两本作业本。工作簿1是我的目标工作簿(DWB),工作簿2是我的原始工作簿(OWB)。我的OWB在网络文件夹中 我正在尝试将OWB的所有内容复制到DWB 下面是我迄今为止尝试过的代码。但在下面的一行中,我得到了一个错误 对象不支持此属性 设置OWB=Workbooks.Open(文件名:=filepath) 当你遇到这样的问题时,尽量减少代码并隔离问题。因此,在您的情况下,最小问题如下所示: Option Explicit Public Sub TestMe() Dim owb As
当你遇到这样的问题时,尽量减少代码并隔离问题。因此,在您的情况下,最小问题如下所示:
Option Explicit
Public Sub TestMe()
Dim owb As Workbook
Set owb = Workbooks.Open("C:\Users\Something\Desktop\MyFile.xlsm")
End Sub
试着使这个最小的2班轮工作,那么你的问题将得到解决。这就是。当您遇到这样的问题时,尽量减少代码并隔离问题。因此,在您的情况下,最小问题如下所示:
Option Explicit
Public Sub TestMe()
Dim owb As Workbook
Set owb = Workbooks.Open("C:\Users\Something\Desktop\MyFile.xlsm")
End Sub
试着使这个最小的2班轮工作,那么你的问题将得到解决。这就是错误背后的想法。错误已被追踪并解决 不过,我相信您可以充分利用对
Range
引用的透彻理解和使用,既确保正确引用了正确的引用,又减少了键入
例如,您可以编写以下代码:
With Workbooks.Open(Filename:=filepath) 'reference wanted workbook
With .Worksheets(1) 'reference wanted worksheet of referenced workbook
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For i = 1 To Lastcol
header = .Cells(1, i).value
Set cell = DWB.Worksheets("T").Range("A4:Y4").Find(header, LookIn:=xlValues, lookat:=xlWhole)
If Not cell Is Nothing Then
.Range(.Cells(2, i), .Cells(LastRow, i)).Copy Destination:=cell.Offset(1)
Else
'handle error
End If
Next i
End With
.Close savechanges:=False
End With
在这里,您还可以看到
Find()
方法的建议最小参数显式设置,否则将使用其上次调用(甚至从UI!)中的设置。错误已被跟踪并解决
不过,我相信您可以充分利用对Range
引用的透彻理解和使用,既确保正确引用了正确的引用,又减少了键入
例如,您可以编写以下代码:
With Workbooks.Open(Filename:=filepath) 'reference wanted workbook
With .Worksheets(1) 'reference wanted worksheet of referenced workbook
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Lastcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For i = 1 To Lastcol
header = .Cells(1, i).value
Set cell = DWB.Worksheets("T").Range("A4:Y4").Find(header, LookIn:=xlValues, lookat:=xlWhole)
If Not cell Is Nothing Then
.Range(.Cells(2, i), .Cells(LastRow, i)).Copy Destination:=cell.Offset(1)
Else
'handle error
End If
Next i
End With
.Close savechanges:=False
End With
您还可以看到
Find()
方法的建议最小参数显式设置,否则将使用上次调用(甚至从UI!)如果您在错误发生之前写入MsgBox filepath
,请将所看到的内容准确复制到Windows资源管理器中,然后按Enter键,会发生什么情况?这将出现错误:header=OWB.Worksheets(1).cell(1,i).Value
按原样Cells
而不是cell
@Rory谢谢你,它起作用了:)如果你在错误之前写MsgBox filepath
,请将你看到的内容准确复制到Windows资源管理器中,然后按Enter键,会发生什么情况?这将出现错误:header=OWB.Worksheets(1).单元格(1,i).Value
应为单元格
,而非单元格
@Rory谢谢你它起作用了:)