Макрос для переноса данных из excel в excel

Обновлено: 06.07.2024

Копирование данных с помощью VBA — это распространенный процесс, который решается с помощью хорошо написанного кода. Допустим, мы хотим регулярно копировать данные с Sheet1 на Sheet2 с помощью кода.

Следующая процедура Excel VBA копирует данные с активного листа и вставляет их в первую пустую ячейку в нижней части диапазона на другом листе.

Красный (2) в конце — это часть кода, которая смещается к первой пустой строке в столбце A.

Если мы хотим включить начальный лист в процедуру копирования, есть еще один способ скопировать данные с одного листа на другой.

В приведенном выше примере Лист1 — это кодовое имя рабочего листа для копируемого начального листа, а Лист2 — это кодовое имя листа, на который мы копируем.

Кодовое название листа

Кодовое имя листа — это кодовое имя копируемого листа. Он используется не так интенсивно, как должен был бы, но в этом его преимущество: если имя вашего рабочего листа изменено, код не сломается. В примере слева Лист1 — это кодовое имя листа с именем Данные, а Лист2 — это кодовое имя листа с именем Консолидация. Если любое имя листа изменено при условии, что используется кодовое имя рабочего листа, код останется стабильным. Всегда используйте кодовое имя рабочего листа в VBA.

Другие методы копирования с помощью VBA

В VBA есть множество способов делать одни и те же действия, и следующий пример будет повторять описанный выше. Это выглядит менее эффективно, однако должно работать быстрее, чем копирование данных для больших наборов данных.

Sub UseAnArray() 'Excel VBA для копирования данных
Dim ar As Variant

Подробнее об использовании вариантов массива можно узнать в статье Массив VBA.

Следующий метод полезен для диапазонов, которые не являются непрерывными, но имеют одинаковый размер. Под одинаковым размером я подразумеваю одинаковую глубину. Изучите следующий пример:

В приведенном выше примере столбец B будет пропущен, а данные из A1 в Ac и из C1 в D3 будут вставлены в диапазон листа 2 A1. Хитрость при копировании таких данных заключается в том, чтобы размер диапазона был одинаковым для каждого сегмента. [A1:A3, C1:C3] оба диапазона заканчиваются строкой 3. Это можно расширить, чтобы добавить больше диапазонов. Например:

Как видите, диапазон Excel может увеличиваться при условии, что диапазон имеет одинаковый размер. Строки с 1 по 3 повторяются выше, и хотя это верно, вы можете продолжать помещать дополнительные диапазоны в квадратные скобки Excel.

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

Option Explicit
Sub FindthenCopy() 'Excel VBA находит положение заголовка
Dim fn As Long

fn=Rows("1:1").Find("Заголовок 1").Column
Range(Cells(2, fn), Cells(Rows.Count, fn).End(xlUp)) .Copy Sheet4.Range("A65536").End(xlUp)(2)

После того, как заголовок 1 будет найден, процедура VBA скопирует данные из найденного столбца в первую пустую строку в столбце A листа2.

Копирование данных, соответствующих критериям

Пользователи Excel прагматичны и выросли, используя оператор IF в повседневном использовании Excel. Поэтому, когда дело доходит до VBA, естественно предположить, что лучший способ переместить данные из одного места в другое — это проверить каждую ячейку, чтобы увидеть, соответствует ли она условию, а затем переместить всю строку. Ниже приводится часто встречающийся код, который я вижу на форумах Excel;

Опция Explicit
Sub Test()
Dim i As Integer

Range("B" & i).EntireRow.Copy
Sheets("Sheet2").Select
Range("A1").End(xlDown).Offset(1, 0). Выберите
Selection.PasteSpecial xlPasteValues ​​
Листы ("Лист1"). Выберите

Возможно, я вставил слишком много строк, но предположил, что рекордер использовался для генерации большей части кода. Проблема с приведенным выше VBA заключается в том, что по мере экспоненциального роста списка информации время, необходимое для запуска процесса, уменьшается в зависимости от размера набора данных. Если список состоит из 100 строк, Excel должен выполнить 100 действий, если все элементы соответствуют критериям. Можно утверждать, что в приведенном выше примере Excel должен сделать 200 действий, задать вопрос 100 раз, потенциально выполнить действие еще 100 раз.

Простое решение

Легче задать один вопрос Excel и выполнить одно действие Excel для всего набора данных. Это можно сделать, опираясь на предыдущие уроки, описанные в разделе сайта Autofiler with VBA. В приведенном выше примере очень простым способом перемещения данных будет следующая конструкция VBA:

Range("A1:A101").AutoFilter 1, "Ford"
Range("A1:A101").Copy Sheet2.Range("A" & Rows.Count).End(xlUp)( 2)
Range("A1").Autofilter 'Выкл с автофильтром

Этот метод удобен, если вы хотите регулярно добавлять информацию в сводную таблицу. VBA изолирует подобные данные и легко перемещает информацию между листами.


Вставьте строку внизу диапазона и скопируйте формулу сверху

Если у вас есть новые данные, добавленные в нижнюю часть диапазона ячеек, и вам нужно скопировать формулу из ячеек выше, тогда следующий код Excel VBA устранит эту ситуацию. Он копирует последнюю строку данных, вставляет новую строку, а формулы сверху перемещаются на одну строку вниз в идеальной последовательности.

Rows(Range("A" & Rows.Count).End(xlUp).Row).Copy
Rows(Range("A" & Rows.Count).End(xlUp).Row + 1 ).Вставить xlDown

Эта концепция раскрывается далее в следующей статье, где вы указываете в ячейках, сколько раз следует копировать указанную выше строку. Скопируйте n строк в Excel

Итог: узнайте, как использовать макросы VBA для копирования и вставки данных из одной книги Excel в другую, включая добавление данных в конец существующего диапазона или замену данных.

Уровень квалификации: средний

Загрузить файлы Excel

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

New-Data.xlsx (12,2 КБ)

А вот книга, в которую я копирую данные в. Это тот, в котором есть весь код макроса:

Reports.xlsm (22,0 КБ)

Копирование данных из одной книги в другую с помощью макросов Excel

Существует несколько способов копирования и вставки данных с помощью VBA. Сначала мы собираемся использовать метод Range.Copy. Это позволяет нам выполнить все действие в одной строке кода.

Метод Range.Copy имеет необязательный параметр Destination, который позволяет нам указать диапазон, в который мы хотим вставить данные.

Мы ссылаемся на исходную книгу, лист и диапазон, из которых хотим скопировать. Для параметра Destination мы ссылаемся на целевую книгу, рабочий лист и начальную ячейку диапазона для вставки.

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

Метод Range.Copy выполняет обычное копирование и вставку, включая форматирование и формулы. Если вы просто хотите вставить значения, ниже приведен пример.

Важные моменты, которые следует помнить

При использовании этого макроса для копирования данных из одной книги в другую помните об этом.

  • Вы должны указать правильное расширение файла в свойстве Workbooks (подробности см. в видео выше).
  • Для этого в рабочих книгах не обязательно должны быть включены макросы.
  • При желании этот код можно сохранить в отдельной книге, например в личной книге макросов. (Узнайте, как создать личную книгу макросов, здесь.)
  • Вам не нужно сначала выбирать или активировать книги, листы или даже диапазоны. Это связано с тем, что в коде уже указаны эти данные.
  • При использовании этого кода должны быть открыты обе книги. Но процесс открытия и закрытия книг можно автоматизировать с помощью дополнительного кода:

Специальный метод PasteSpecial для вставки значений, форматов и т. д.

При вставке данных в целевую книгу с помощью VBA вы также можете использовать любые обычные функции специальной вставки.

Ниже приведен пример макроса. Вы заметите, что в моем примере используется тип PasteValues, но вы также можете использовать PasteFormulas, PasteFormats или любые другие доступные параметры PasteSpecial. Вот список PasteTypes.

Чтобы узнать больше о параметрах PasteSpecial, посмотрите мою серию видео о копировании и вставке с помощью VBA.

Вставка ниже последней ячейки

Иногда размер диапазонов данных в исходном и целевом файлах будет меняться при каждом запуске макроса. Например, у вас может быть ежедневная задача по добавлению новых записей из экспортированного листа в основной список в другой книге.

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

В этом случае вам нужно добавить новые записи непосредственно под последней записью на листе назначения. Для этого вы можете использовать следующий макрос.

Этот код вставляет ваши исходные данные сразу после существующих данных конечного листа.

Помимо поиска последней строки в диапазоне или на листе, вы также можете найти последний столбец или ячейку. Посмотрите мой пост и видео о трех способах поиска последней использованной строки или столбца, чтобы узнать больше.

Очистка диапазона назначения перед вставкой

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

Запуск этого макроса удалит все существующие данные в целевом диапазоне перед вставкой данных из исходного листа.


Альтернативный код для копирования данных в текущую книгу

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

Таким образом, вам не придется менять код, если вы измените имя файла для целевой книги. Вот код VBA, использующий ThisWorkbook.

Это напоминает мне, что VBA всегда будет предполагать, что макрос, который вы хотите запустить, относится к активной книге, если вы не укажете книгу в каждой строке кода. Я рассказываю об этом критическом допущении и других важных аспектах выполнения кода VBA в этом видео о допущениях VBA.

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

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

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

Заключение

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

Пожалуйста, оставьте комментарий ниже с любыми вопросами или предложениями. Спасибо! 🙂

Office 365 профессиональный плюс переименовывается в Приложения Microsoft 365 для предприятий. Для получения дополнительной информации об этом изменении прочитайте эту запись в блоге.

Обзор

В этой статье обсуждаются многочисленные способы переноса данных в Microsoft Excel из приложения Microsoft Visual Basic. В этой статье также представлены преимущества и недостатки каждого метода, чтобы вы могли выбрать наиболее подходящее решение.

Дополнительная информация

Для переноса данных в книгу Excel чаще всего используется автоматизация. Автоматизация дает вам наибольшую гибкость для указания местоположения ваших данных в книге, а также возможность форматировать книгу и выполнять различные настройки во время выполнения. С помощью автоматизации вы можете использовать несколько подходов к передаче данных:

  • Перенос данных ячейка за ячейкой
  • Перенос данных из массива в диапазон ячеек
  • Перенос данных из набора записей ADO в диапазон ячеек с помощью метода CopyFromRecordset
  • Создайте QueryTable на листе Excel, содержащем результат запроса к источнику данных ODBC или OLEDB
  • Перенесите данные в буфер обмена, а затем вставьте содержимое буфера обмена на лист Excel.

Существуют также методы переноса данных в Excel, которые не обязательно требуют автоматизации. Если вы используете приложение на стороне сервера, это может быть хорошим подходом, позволяющим снять основную часть обработки данных с ваших клиентов. Для переноса данных без автоматизации можно использовать следующие методы:

  • Перенесите свои данные в текстовый файл с разделителями табуляцией или запятыми, который Excel сможет позже преобразовать в ячейки на листе.
  • Перенесите данные на лист с помощью ADO
  • Перенос данных в Excel с помощью динамического обмена данными (DDE)

В следующих разделах содержится более подробная информация о каждом из этих решений.

Примечание. При использовании Microsoft Office Excel 2007 вы можете использовать новый формат файлов книг Excel 2007 (*.xlsx) при сохранении книг. Для этого найдите следующую строку кода в следующих примерах кода:

Замените этот код следующей строкой кода:

Кроме того, база данных "Борей" по умолчанию не включена в Office 2007. Однако вы можете загрузить базу данных "Борей" из Microsoft Office Online.

Использовать автоматизацию для передачи данных по ячейкам

С помощью автоматизации вы можете передавать данные на лист по одной ячейке за раз:

Передача данных ячейка за ячейкой может быть вполне приемлемым подходом, если объем данных невелик. У вас есть возможность размещать данные в любом месте книги и условно форматировать ячейки во время выполнения. Однако этот подход не рекомендуется, если у вас есть большой объем данных для переноса в книгу Excel. Каждый объект Range, который вы получаете во время выполнения, приводит к запросу интерфейса, поэтому передача данных таким образом может быть медленной. Кроме того, Microsoft Windows 95 и Windows 98 имеют ограничение в 64 КБ на запросы интерфейса.Если вы достигнете или превысите это ограничение в 64 КБ на запросы к интерфейсу, сервер автоматизации (Excel) может перестать отвечать или вы можете получить ошибки, указывающие на нехватку памяти.

Еще раз: передача данных по ячейкам допустима только для небольших объемов данных. Если вам нужно перенести большие наборы данных в Excel, вам следует рассмотреть одно из решений, представленных ниже.

Дополнительные примеры кода для автоматизации Excel см. в разделе Как автоматизировать Microsoft Excel из Visual Basic.

Использовать автоматизацию для переноса массива данных в диапазон на листе

Массив данных может быть передан сразу в диапазон нескольких ячеек:

Если вы передаете свои данные, используя массив, а не ячейку за ячейкой, вы можете получить огромный прирост производительности с большим объемом данных. Рассмотрим эту строку из приведенного выше кода, которая передает данные в 300 ячеек на листе:

Эта строка представляет два запроса интерфейса (один для объекта Range, который возвращает метод Range, и другой для объекта Range, который возвращает метод Resize). С другой стороны, передача данных ячейка за ячейкой потребовала бы запросов на 300 интерфейсов к объектам Range. Когда это возможно, вы можете извлечь выгоду из массовой передачи данных и сокращения количества запросов к интерфейсу, которые вы делаете.

Использование автоматизации для переноса набора записей ADO в диапазон рабочих листов

В Excel 2000 появился метод CopyFromRecordset, который позволяет перенести набор записей ADO (или DAO) в диапазон на рабочем листе. В следующем коде показано, как можно автоматизировать Excel 2000, Excel 2002 или Office Excel 2003 и перенести содержимое таблицы Orders в образец базы данных Northwind с помощью метода CopyFromRecordset.

Примечание. Если вы используете версию базы данных "Борей" для Office 2007, в примере кода необходимо заменить следующую строку кода:

Замените эту строку кода следующей строкой кода:

Excel 97 также предоставляет метод CopyFromRecordset, но его можно использовать только с набором записей DAO. CopyFromRecordset с Excel 97 не поддерживает ADO.

Дополнительные сведения об использовании ADO и метода CopyFromRecordset см. в статье Как перенести данные из набора записей ADO в Excel с помощью автоматизации.

Использовать автоматизацию для создания QueryTable на листе

Объект QueryTable представляет собой таблицу, созданную на основе данных, возвращенных из внешнего источника данных. При автоматизации Microsoft Excel вы можете создать QueryTable, просто предоставив строку подключения к источнику данных OLEDB или ODBC вместе со строкой SQL. Excel берет на себя ответственность за создание набора записей и его вставку на лист в указанное вами место. Использование QueryTables дает несколько преимуществ по сравнению с методом CopyFromRecordset:

  • Excel обрабатывает создание набора записей и его размещение на листе.
  • Запрос можно сохранить в QueryTable, чтобы его можно было обновить позже для получения обновленного набора записей.
  • Когда на лист добавляется новая таблица QueryTable, вы можете указать, что данные, уже существующие в ячейках на листе, должны быть сдвинуты для размещения новых данных (подробности см. в свойстве RefreshStyle).

В следующем коде показано, как можно автоматизировать Excel 2000, Excel 2002 или Office Excel 2003 для создания новой таблицы QueryTable на листе Excel с использованием данных из примера базы данных "Борей":

Использовать буфер обмена

Буфер обмена Windows также можно использовать в качестве механизма для переноса данных на рабочий лист. Чтобы вставить данные в несколько ячеек на листе, вы можете скопировать строку, в которой столбцы разделены символами табуляции, а строки разделены символами возврата каретки. В следующем коде показано, как Visual Basic может использовать свой объект Clipboard для передачи данных в Excel:

Создайте текстовый файл с разделителями, который Excel сможет разбить на строки и столбцы

Excel может открывать файлы с разделителями табуляцией или запятыми и правильно анализировать данные в ячейках. Вы можете воспользоваться этой функцией, если хотите перенести большой объем данных на рабочий лист, практически не используя автоматизацию. Это может быть хорошим подходом для клиент-серверного приложения, поскольку текстовый файл может быть сгенерирован на стороне сервера. Затем вы можете открыть текстовый файл на клиенте, используя автоматизацию там, где это уместно.

В следующем коде показано, как можно создать текстовый файл с разделителями-запятыми из набора записей ADO:

Примечание. Если вы используете версию базы данных "Борей" для Office 2007, в примере кода необходимо заменить следующую строку кода:

Замените эту строку кода следующей строкой кода:

Если ваш текстовый файл имеет расширение .CSV, Excel открывает файл без отображения мастера импорта текста и автоматически предполагает, что файл разделен запятыми. Точно так же, если ваш файл имеет расширение .TXT, Excel автоматически анализирует файл с помощью разделителей табуляции.

В предыдущем примере кода Excel запускался с помощью инструкции Shell, а имя файла использовалось в качестве аргумента командной строки. В предыдущем примере автоматизация не использовалась. Однако при желании вы можете использовать минимальную автоматизацию, чтобы открыть текстовый файл и сохранить его в формате книги Excel:

Перенос данных на лист с помощью ADO

Используя Microsoft Jet OLE DB Provider, вы можете добавлять записи в таблицу в существующей книге Excel. «Таблица» в Excel — это просто диапазон с определенным именем. Первая строка диапазона должна содержать заголовки (или имена полей), а все последующие строки содержат записи. Следующие шаги иллюстрируют создание рабочей книги с пустой таблицей с именем MyTable.

Excel 97, Excel 2000 и Excel 2003

Создать новую книгу в Excel.

Добавьте следующие заголовки к ячейкам A1:B1 листа Sheet1:

A1: Имя B1: Фамилия

Выровнять ячейку B1 по правому краю.

В меню "Вставка" выберите "Имена", а затем выберите "Определить". Введите имя MyTable и нажмите OK.

Сохраните новую книгу как C:\Book1.xls и закройте Excel.

Чтобы добавить записи в MyTable с помощью ADO, вы можете использовать код, подобный следующему:

Excel 2007

В Excel 2007 создайте новую книгу.

Добавьте следующие заголовки к ячейкам A1:B1 листа Sheet1:

A1: Имя B1: Фамилия

Выровнять ячейку B1 по правому краю.

На ленте откройте вкладку "Формулы" и нажмите "Определить имя". Введите имя MyTable и нажмите кнопку ОК.

Сохраните новую книгу как C:\Book1.xlsx, а затем закройте Excel.

Чтобы добавить записи в таблицу MyTable с помощью ADO, используйте код, похожий на следующий пример кода.

При добавлении записей в таблицу таким образом сохраняется форматирование книги. В предыдущем примере новые поля, добавленные в столбец B, форматируются с выравниванием по правому краю. Каждая запись, добавляемая в строку, заимствует формат из строки над ней.

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

Метод обновления данных на листе Excel с помощью ADO или DAO не работает в среде Visual Basic для приложений в Access после установки пакета обновления 2 (SP2) для Office 2003 или после установки обновления для Access 2002. который включен в статью 904018 базы знаний Майкрософт. Этот метод хорошо работает в среде Visual Basic for Application из других приложений Office, таких как Word, Excel и Outlook.

Для получения дополнительной информации см. следующую статью:

Дополнительные сведения об использовании ADO для доступа к книге Excel см. в статье Запрос и обновление данных Excel с помощью ADO из ASP.

Использовать DDE для передачи данных в Excel

DDE — это альтернатива автоматизации в качестве средства связи с Excel и передачи данных; однако с появлением автоматизации и COM DDE больше не является предпочтительным методом для связи с другими приложениями, и его следует использовать только тогда, когда у вас нет другого доступного решения.

Чтобы передать данные в Excel с помощью DDE, вы можете использовать метод LinkPoke для передачи данных в определенный диапазон ячеек или использовать метод LinkExecute для отправки команд, которые будет выполнять Excel.

В следующем примере кода показано, как установить диалог DDE с Excel, чтобы вы могли вставлять данные в ячейки на листе и выполнять команды. Используя этот пример, для успешного установления диалога DDE с LinkTopic Excel|MyBook.xls рабочая книга с именем MyBook.xls уже должна быть открыта в работающем экземпляре Excel.

При использовании Excel 2007 для сохранения книг можно использовать новый формат файлов .xlsx. Убедитесь, что вы обновили имя файла в следующем примере кода. В этом примере Text1 представляет элемент управления Text Box в форме Visual Basic:

При использовании LinkPoke с Excel вы указываете диапазон в нотации строки-столбца (R1C1) для LinkItem. Если вы вставляете данные в несколько ячеек, вы можете использовать строку, в которой столбцы разделены символами табуляции, а строки разделены символами возврата каретки.

Когда вы используете LinkExecute, чтобы попросить Excel выполнить команду, вы должны дать Excel команду в синтаксисе языка макросов Excel (XLM). Документация XLM не входит в состав Excel версии 97 и более поздних.
DDE не рекомендуется для связи с Excel. Автоматизация обеспечивает наибольшую гибкость и расширяет доступ к новым функциям Excel.

Изучение VBA раскрывает истинный потенциал Microsoft Excel.В этом посте показано, как выполнить одну из наиболее простых задач VBA, которые часто используют разработчики Excel, а именно копирование диапазона данных с одного рабочего листа на другой.

Введение

При разработке скриптов Excel VBA обычно выполняется копирование данных с одного рабочего листа на другой. Это используется для всех видов решений, таких как автоматизация отчета, в котором вы импортировали данные и хотите получить эти данные из импортированного листа на лист отчета.

Пример

Первый шаг – принять решение по следующим вопросам:

  1. Каков диапазон данных для копирования, т. е. ячейки от A1 до B20.
  2. Какое имя листа содержит диапазон копируемых данных, например «ImportSheet» или «Sheet2».
  3. Какое имя рабочего листа, куда будут скопированы данные.
  4. Какое начальное местоположение (ячейка) будет скопировано, например ячейка A1?

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

Время VBA

Следующий шаг — открыть окно VBA в Excel, чтобы можно было написать сценарий. Чтобы открыть окно VBA, выберите вкладку «Разработчик» на ленте Excel, а затем щелкните значок Visual Basic в крайнем левом углу. Альтернативно, сочетание клавиш ALT + F11 откроет окно VBA.

Диапазон копирования VBA на другой лист

Открыв окно VBA, следующим шагом будет вставка нового модуля, где будет написан скрипт VBA. Для этого нажмите «Вставить» > «Модуль» в верхней строке меню:

Диапазон копирования VBA на другой лист

Откроется окно кода (module1), в котором можно написать сценарий VBA:

Диапазон копирования VBA на другой лист

Теперь можно написать код VBA для копирования данных с одного рабочего листа на другой.

Код VBA

Код VBA для копирования данных из таблицы ImportSheet на лист DataTable выглядит следующим образом:

Построчный разбор этого кода VBA:

  • Sub CopyData() — всем сценариям VBA требуется имя, Sub сообщает Excel, что это подпроцедура, а CopyData — это имя этой подпроцедуры, поэтому его можно изменить на другое имя. Квадратные скобки должны быть включены в конце этой строки кода.
  • Worksheets("ImportSheet").Range("A1:C13").Copy — эта строка кода сообщает Excel, какие данные копировать. В этом примере мы хотим, чтобы данные на рабочем листе с именем ImportSheet в диапазоне от A1 до C13 были скопированы.
  • Worksheets("DataTable").Range("A1").PasteSpecial — эта строка кода сообщает Excel, куда копировать данные. В этом примере данные должны быть скопированы на рабочий лист DataTable, начиная с ячейки A1.
  • End Sub — сообщает Excel, что подпроцедура завершена и должна быть включена.

Чтобы запустить код VBA, нажмите значок кнопки воспроизведения в окне VBA, либо нажмите клавишу F5, чтобы запустить код.

Диапазон копирования VBA на другой лист

Теперь данные скопированы из таблицы ImportSheet в таблицу DataTable:

Диапазон копирования VBA на другой лист


Понимание VBA является ключом к тому, чтобы стать опытным пользователем Excel, а также отличным способом сделать карьеру в области анализа данных. Большинство компаний так или иначе используют Excel, но мало кто понимает VBA. На этом сайте есть и другие публикации по VBA, которые помогут вам в этом, но для тех, кому нужен справочник, мой фаворит — VBA и макросы, написанные гуру Excel Биллом Джеленом и Трейси Сирстад. Вы можете проверить копию на Amazon, нажав на изображение ниже.

Читайте также: