Перенос данных в Excel с одного листа на другой

Автор: | 09.02.2015

Пусть первый лист имеет имя Лист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 может выдавать ошибку и программа будет сниматься.