Excel VBA: как вставить данные на каждый лист книги

Если вы опытный пользователь Excel и часто работаете с VBA (Visual Basic для приложений), возможно, вы столкнулись с необходимостью вставки данных на каждый лист книги. Эта задача может занять много времени, если выполнять ее вручную, но не бойтесь! В этой статье мы рассмотрим несколько методов с использованием разговорного языка и приведем примеры кода, которые помогут вам эффективно выполнить эту задачу.

Метод 1: циклическое перебор листов
Самый простой подход — пройтись по каждому листу книги и вставить данные. Вот пример фрагмента кода, демонстрирующий этот метод:

Sub PasteToAllSheets()
    Dim ws As Worksheet
    Dim sourceSheet As Worksheet

    Set sourceSheet = ThisWorkbook.Worksheets("SourceSheet")

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> sourceSheet.Name Then
            sourceSheet.Range("A1:D10").Copy ws.Range("A1")
        End If
    Next ws
End Sub

В этом примере у нас есть исходный лист с именем «SourceSheet», из которого мы копируем диапазон (A1:D10) и вставляем его на каждый лист в книге, исключая сам исходный лист.

Метод 2: использование коллекции Sheets
Другой способ добиться того же результата — использовать коллекцию Sheets. Вот пример фрагмента кода:

Sub PasteToAllSheets()
    Dim wb As Workbook
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet

    Set wb = ThisWorkbook
    Set sourceSheet = wb.Worksheets("SourceSheet")

    For Each targetSheet In wb.Sheets
        If targetSheet.Name <> sourceSheet.Name Then
            sourceSheet.Range("A1:D10").Copy targetSheet.Range("A1")
        End If
    Next targetSheet
End Sub

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

Метод 3: использование объекта ThisWorkbook
Если вы предпочитаете лаконичный подход, вы можете использовать объект ThisWorkbookдля прямой ссылки на книгу, не присваивая ее переменной. Вот пример фрагмента кода:

Sub PasteToAllSheets()
    Dim sourceSheet As Worksheet

    Set sourceSheet = ThisWorkbook.Worksheets("SourceSheet")

    For Each ws In ThisWorkbook.Sheets
        If ws.Name <> sourceSheet.Name Then
            sourceSheet.Range("A1:D10").Copy ws.Range("A1")
        End If
    Next ws
End Sub

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

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

Не забудьте изменить диапазон и имена листов в соответствии с вашими конкретными потребностями. Приятного кодирования!