2016-09-08 21 views
1

Я хочу прочитать книгу и скопировать некоторые ячейки в другую книгу. Целью кода является копирование ячеек из разных листов из одного файла в другой.VBA - Активировать открытую книгу

Для этого предлагает я создал этот код:

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 

После завершения процесса в первом листе, я сравниваю, если в новом файле есть любой другой лист, чтобы начать этот процесс. Если нет (всегда), я создаю новый лист, чтобы начать с процесса копирования и вставки, но функции ThisWorkbook и ActiveWorkbook работают на одном листе (копирование и вставка из той же книги), а не из одного файла в другой.

Вот почему, я открываю первую книгу, но когда процесс копирования и вставки отделки, появляется следующее сообщение:

Error image

Что я могу сделать, чтобы решить эту проблему это?

Спасибо за все

ответ

1

Создание Workbook объекта и назначить рабочую книгу вы открываете ему:

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

Тогда вы в состоянии обратиться к этой переменной вместо ActiveWorkbook

Так измените ситуацию в книге, в которой находится код, используйте ThisWorkbook

И чтобы изменить ситуацию в другой книге, используйте wb

Смежные вопросы