Пусть первый лист имеет имя Лист1, а второй Лист2
Можно воспользоваться способом прямого переноса данных
Sheets(“Лист2”).cells(1,1)=Sheets(«Лист2”).cells(1,1)
Можно осуществить перенос путем использования переменных или массива данных. Для этого запоминаем значения в переменные с ячеек Лист2, а затем считываем их на Лист1 из этих переменных.
Для сокращения написания команд при переносе данных можно использовать команду активизации конкретного листа. Лучше это делать в связке с командой Если.
If Activesheet.Name<>”Лист1” then
Sheets(“Лист1”).Activate
Endif
В случае, если у Вас открыто две или более книг, процесс переноса данных остаётся похожим.
1) Лучше завести две символьных переменных типа String для хранения имени открываемых книг.
Например,- Kniga1 и Kniga2. Когда открывается или загружается любая книга Excel, то она автоматически становится активной.
Запомнмить имя активной книги можно с помощью команды
Kniga1=ThisWorkbook.Name или Kniga1=ActiveWorkbook.Name
Аналогично можно запомнить имя второй активной книги, обычно через команду
Kniga2=ActiveWorkbook.Name
2) Осталось поочередно активировать Kniga1 или Kniga2. Это можно сделать по команде
Windows(Kniga1).Activate или Windows(Kniga2).Activate
В одном случае мы считываем или запоминаем данные из первой активной книги и активного листа её, а при активизации второй книги переносим на нужный лист нужные сведения.
Общий алгоритм выглядит так
Sub programm1()
‘Обявляем все переменные и например
Dim Kniga1 as String
Dim Kniga2 as String
Kniga1=ThisWorkbook.Name
‘ Здесь часто используется и цикл типа For или Do ‘Особенно тогда, когда Вам надо обработать ряд книг с однотипными данными
‘или одну книгу с однотипными данными на каждом листе
Windows(Kniga1).Activate
‘ считываем данные в массив или переменные
Windows(Kniga2).Activate
‘ переносим данные в Kniga2
End Sub ‘Конец цикла
P.S. Если Вы обрабатываете 2 книги. То одна из них будет Thisworkbook Msgbox Thisworkbook.Name выведет имя первой загруженной книги, в которой обычно и содержится основной код VBA. Activeworkbook – это текущая активная книга, из которой обычно и производится чтение данных на обработку. Запись результата я обычно сохраняю в текущей
рабочей книге. Код: FullPath = ActiveWorkbook.FullName i = InStrRev(FullPath, “\”) ‘позиция последнего \ Name1 = Mid(FullPath, i + 1) Folder = Left(FullPath, i – 1) MsgBox FullPath & vbLf & Name1 & vbLf & Folder выведет полный путь и разобьет его на 2 части, выделив последнюю часть в пути. Именем активной книги обычно является само название этой книги. Если же книга пересохранялась, то ActiveWorkbook.Name выведет вместо названия самой книги
её полный путь. Из-за этого команда Windows(Kniga2).Activate может выдавать ошибку и программа будет сниматься.