Найти тему
ExcelVba

Макрос копирования на другой лист/в другую книгу(файл) Excel VBA

Оглавление

Подробно о том, как работать с данным макросом я рассказываю в видео по ссылке (https://rutube.ru/video/ba252faf453768c11c00369e3809f3bb/)

Одним из основных "рутинных" действий в аналитике (помимо функции ВПР, естественно), является постоянное копирование/перемещение/вставка тех или иных данных с одного листа/из одной книги на другой лист/в другую книгу(файл).

Итак, задача:

Дано: Некоторый набор/диапазон данных на листе Excel в одной книге(файле)
Нужно: скопировать эти данные на другой лист/в другую книгу(файл)

Сразу оговорюсь, что методика у решения копирования с листа на лист в одной книге или между книгами схожа, но есть некоторые нюансы. В примере рассмотрим вариант копирования только одной ячейки.

Основные понятия, которые нужно знать

Язык программирования VBA в рамках Excel (а именно на нём пишутся макросы в Excel) в базе своей ссылается на три уровня координат. Координаты, в данном случае, это как почтовый адрес. Основные составляющие у подобного адреса используются в коде макроса и представляют собой:

- Окно (англ. Windows) – определённая книга/окно программы (город)

- Лист (Sheet) – определённый лист внутри выбранной книги (улица)

- Ячейка (Range) – определённая ячейка (ячейки) на выбранном листе (номер дома и квартиры)

Как скопировать данные с одного листа на другой внутри одной книги

В данном примере показано, как скопировать данные между листами в рамках одной книги Excel

В данном варианте примера у нас есть некая книга Excel с названием "Excel 1.xlsb", внутри которой содержаться два листа с именами "Лист 1" и "Лист 2". На "Листе 1" в ячейке "А1" у нас есть информация, которую необходимо скопировать на "Лист 2" в ячейку с аналогичным адресом. Для этого используется следующий код макроса:

Sub Внутри_книги()
'
' Внутри_книги Макрос
'
'
Windows("Excel 1.xlsb").Activate
Sheets("Лист1").Select
Range("A1").Select
Selection.Copy
Sheets("Лист2").Select
Range("A1").Select
ActiveSheet.Paste
End Sub

Блок Windows("Excel 1.xlsb").Activate – отвечает за выбор определённой книги Excel, откуда будем копировать.

Блок Sheets("Лист1").Select – отвечает за выбор определённого листа внутри выбранной книги, с которого будем копировать данные.

Блок Range("A1").Select отвечает за выбор определённой ячейки (ячеек) для копирования с выбранного листа.

Блок Selection.Copy – действие копирования. Аналогично сочетанию клавиш Ctrl+C.

Блок Sheets("Лист2").Select – отвечает за выбор листа внутри текущей книги, куда будут скопированы данные.

Блок Range("A1").Select – отвечает за выбор ячейки на выбранном листе, с которой начинается вставка скопированной ранее ячейки/ячеек.

Блок ActiveSheet.Paste – действие вставки. Аналогично сочетанию клавиш Ctrl+V.

Как скопировать данные из одной книги в другую книгу

В данном примере показано, как скопировать данные между листами в рамках между двумя разными книгами Excel. Обе книги Excel должны быть открыты.

В данном варианте примера у нас есть некая книга(файл) Excel с названием "Excel 1.xlsb", внутри которой содержаться два листа с именами "Лист 1" На "Листе 1" в ячейке "А1" у нас ест информация, которую необходимо скопировать в другую открытую книгу(файл) Excel с названием "Excel 2.xlsb" на "Лист 1" в ячейку с аналогичным адресом. Для этого используется следующий код макроса:

Sub Книга_в_книгу()
'
' Книга_в_книгу Макрос
'
'
Windows("Excel 1.xlsb").Activate
Sheets("Лист1").Select
Range("A1").Select
Selection.Copy
Windows("Excel 2.xlsb").Activate
Sheets("Лист1").Select
Range("A1").Select
ActiveSheet.Paste
End Sub

Блок Windows("Excel 1.xlsb").Activate – отвечает за выбор определённой книги Excel, откуда будем копировать.

Блок Sheets("Лист1").Select – отвечает за выбор определённого листа внутри выбранной книги, с которого будем копировать данные.

Блок Range("A1").Select отвечает за выбор определённой ячейки (ячеек) для копирования с выбранного листа.

Блок Selection.Copy – действие копирования. Аналогично сочетанию клавиш Ctrl+C.

Блок Windows("Excel 2.xlsb").Activate – отвечает за переключение на книгу Excel, в которую будут копироваться данные.

Блок Sheets("Лист2").Select – отвечает за выбор листа внутри выбранной книги, куда будут скопированы данные.

Блок Range("A1").Select – отвечает за выбор ячейки на выбранном листе, с которой начинается вставка скопированной ранее ячейки/ячеек.

Блок ActiveSheet.Paste – действие вставки. Аналогично сочетанию клавиш Ctrl+V.

Подписывайтесь на мой канал на

Rutube (https://rutube.ru/channel/30734190/)

Telegram (https://t.me/xxlanalytics)