VBA – 激活打开的工作簿

我想读取工作簿并复制另一个工作簿中的某些单元格。 代码的目的是将不同工作表中的单元格从一个文件复制到另一个文件。

对于这个build议,我创build了这个代码:

Sub processCopy(file) 'Abrir documento Workbooks.Open Filename:=file, UpdateLinks:=0 cantn = ThisWorkbook.Sheets.Count cantv = Sheets.Count - 5 cantn = cantn - 4 'Recorrer los libros del documento abierto For i = 1 To (Sheets.Count - 5) 'Obtener nombre del libro seleccionado nombre = Sheets(i + 2).Name 'Filtrar los libros no necesarios If nombre <> "Instructions" And nombre <> "Executive Summary" And nombre <> "Process Update" And nombre <> "Template" And nombre <> "Notes" Then If cantv >= cantn Then ThisWorkbook.Sheets(3).copy after:=ThisWorkbook.Sheets(cantn + 2) cantn = cantn + 1 ThisWorkbook.Sheets(cantn + 2).Name = nombre ElseIf nombre <> ThisWorkbook.Sheets(cantn + 2).Name Then ThisWorkbook.Sheets(cantn + 2).Name = nombre End If Workbooks.Open Filename:=file, UpdateLinks:=0 ActiveWorkbook.Worksheets(nombre).Activate ActiveWorkbook.Sheets(nombre).Range("C4:O23").Select Selection.copy ThisWorkbook.Sheets(nombre).Range("C4:O23").PasteSpecial 

在完成第一张纸的处理之后,我比较在新文件中是否有任何其他纸张以该处理开始。 如果没有(总是)我创build一个新的工作表开始复制和粘贴的过程,但函数ThisWorkbook和ActiveWorkbook正在同一张工作表(复制和粘贴从同一个工作簿),而不是从一个文件到另一个。

这就是为什么我打开第一个工作簿,但是当复制和粘贴完成时,会出现以下消息:

错误图像

我能做些什么来解决这个问题?

感谢所有

创build一个工作簿对象,并分配您打开的工作簿:

 Dim wb as Workbook Set wb = Workbooks.Open(Filename:=file, UpdateLinks:=0) 

然后你可以引用这个variables而不是ActiveWorkbook

因此,要更改代码所在工作簿中的内容,请使用ThisWorkbook

要改变其他工作簿中的内容,请使用wb