切换到其他工作簿

我试图build立一个代码,将切换到其他打开的工作簿,并从那里复制数据。

我可以使用工作簿(1)和工作簿(2),但问题是这个索引是通过打开工作簿的顺序改变的。

所以我想把它如果function,但没有工作。 下面是代码。

If ActiveWorkbook = Workbooks(1) Then Workbooks(2).Activate Else Workbooks(1).Activate End If 

但它给出错误438,对象不支持属性或方法。

你能帮我debugging吗?

尝试下面的代码, 复制>>粘贴的最后一节只是一个例子,你如何从DestWB Range("A1:E10")从“工作表1”在DestWB ThisWB “工作表Sheet1”(不使用ActivateSelect ) – 你应该能够很容易地修改它。

 Option Explicit Sub CopyThisWorkBOok() Dim ThisWB As Workbook Dim DestWB As Workbook Dim wb As Workbook Dim i As Long i = Application.Workbooks.Count If i <> 2 Then ' check if number of open workbooks is 2 MsgBox "You need to have 2 open workbooks, currently there are " & i & " open workbooks", vbCritical Exit Sub Else For Each wb In Application.Workbooks ' loop through all open workbooks If wb.Name <> ThisWorkbook.Name Then Set DestWB = wb Else Set ThisWB = ThisWorkbook End If Next wb End If ' from here you start the part where you copy >> paste, there is no need to `Activate` or `Select` anything DestWB.Worksheets("Sheet1").Range("A1:E10").Copy Destination:=ThisWB.Worksheets("Sheet1").Range("A2") End Sub 

您可以使用目标对象的名称,例如:

 Workbooks("MyBook.xls").Worksheets("Sheet1").Activate 

根据你想要做什么,描述不是很清楚,你可以使用这个代码的变种。 您可以将包含VBA的工作簿定义为“ThisWorkBook”并从那里开始。

  Dim source_worksheet As Worksheet Set source_worksheet = ThisWorkbook.Worksheets("Sheet2") Dim target_worksheet As Worksheet Set target_worksheet = ActiveWorkbook.Worksheets("Sheet1") 'Defines what sheet you are copying source_worksheet.Copy After:=target_worksheet