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

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

Sub Название_Макроса()

'Выделить диапазон который необходимо скопировать
Range("A1:F52").Select
'Скопировать то, что выделено
Selection.Copy
ChDir "путь к папке где лежит файл в который необходимо скопировать"
Workbooks.Open Filename:= "Название файла, который находится в папке, путь к которой указан выше"
'Выделить начальную ячейку в которую необходимо вставить скопированные данные
Range("A6").Select
'Вставить данные
ActiveSheet.Paste
'сохранить текущую книгу
ActiveWorkbook.Save
'Закрыть книгу
ActiveWorkbook.Close
End Sub

Вариант 2: В открывшейся книге запускаем макрос, чтобы он открыл нужную нам книгу, скопировал от туда нужные нам данные и вставил в нашу открытую книгу, закрыв файл из которого эти данные были скопированы

Sub Название_Макроса2()
'Открываем файл с которого нужно скопировать данные
Workbooks.Open Filename:="C:\Данные.xlsx"

'Скопировать нужный диапазон в открывшейся книге на листе 1
Workbooks("Данные.xlsx").Worksheets("Лист1").Range("A16:E16").Copy
'Активируем нужную нам книгу
Workbooks("Книга1.xlsm").Activate

'Выделяем и вставляем скопированные данные в ячейку А1
ActiveWorkbook.Worksheets("Лист1").Range("A1").Select
ActiveSheet.Paste

'Закрываем книгу откуда мы скопировали данные
Workbooks("Данные.xlsx").Close

End Sub

Еще пример — Скопировать диапазоны данных из активной открытой книги Excel нескольких листов (в нашем примере 3-х листов) в другую книгу, которая хранится в определенном месте. Данные будут вставлены как значения, плюс будут перенесены форматы ячеек.

Sub Копируем_листы_в_другую_книгу()
Dim bookconst As Workbook
Dim abook As Workbook
Set abook = ActiveWorkbook 'присваиваем перменную активной книге
Set bookconst = Workbooks.Open("C:\Users\User\Desktop\1.xlsx") 'присваиваем перменную книге куда необходимо копировать данные

'переходим в активную книгу откуда необходимо скопировать данные
abook.Worksheets("Лист1").Activate
Range("A1:I23").Copy 'копируем определенный диапазон листа, укажите свой диапазон
bookconst.Worksheets("Лист1").Activate 'активируем лист куда необходимо вставить данные
Range("A1:I23").Select 'встаем на ячейку А1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'вставляем только форматы ячеек
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'второй лист
abook.Worksheets("Лист2").Activate
Range("A1:I23").Copy
bookconst.Worksheets("Лист2").Activate
Range("A1:I23").Select 'выделяем диапазон
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'вставляем только форматы ячеек
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'третий лист
abook.Worksheets("Лист3").Activate
Range("A1:I23").Copy
bookconst.Worksheets("Лист3").Activate
Range("A1:I23").Select 'выделяем диапазон
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'вставляем только форматы ячеек
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'сохранить текущую книгу
bookconst.Save
'Закрыть книгу
bookconst.Close
abook.Activate

End Sub

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

Спасибо за внимание.

Поделиться:
57 Комментариев
  • Сергей says:

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

  • Сергей says:

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

  • SuzanTaw says:

    Hey. I sent a screenshot. Did you get it?

  • Alissia says:

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

    Sub Макрос()
    Range(«b20000:b20100»).Select
    Selection.Copy
    Workbooks.Open Filename:= «путь к файлу, в который копируем»
    Range(«A2»).Select
    ActiveSheet.Paste
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    End Sub

    Можно так сделать или нужно писать другой макрос?

  • Сергей says:

    Добрый день. Подскажите что надо поменять в это строчке что бы не прописывать полный путь к файлу, а можно было выбирать диалоговым окном путь и имя файла
    Set bookconst = Workbooks.Open(«C:\Users\User\Desktop\1.xlsx»)
    Вызов диалогового окна нашел. Спасибо за ответ
    Sub AttachFile_test() ‘ пример использования
    Filename$ = GetFilePath()
    If Filename$ = «» Then Exit Sub
    MsgBox «Выбран файл: » & Filename$
    End Sub

    Function GetFilePath(Optional ByVal Title As String = «Выберите файл для обработки», _
    Optional ByVal InitialPath As String = «c:\», _
    Optional ByVal FilterDescription As String = «Файлы счетов», _
    Optional ByVal FilterExtention As String = «*.*») As String
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
    .ButtonName = «Выбрать»: .Title = Title:
    .InitialFileName = GetSetting(Application.Name, «GetFilePath», «folder», InitialPath)
    .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
    If .Show -1 Then Exit Function
    GetFilePath = .SelectedItems(1)
    folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), «\»))
    SaveSetting Application.Name, «GetFilePath», «folder», folder$
    End With
    End Function

  • Гость says:

    Вложение  -1.xlsx

    Добрый день! Могли бы Вы помочь в решении проблемы, есть лист который необходимо поделить на несколько новых книг по параметру Город ( т.е. будет новая книга :Москва в которой будет шапка, город, марка,номер, водитель, Питер в которой будет шапка, город, марка,номер, водитель и т.д.) при этом сохранились форматы ячеек, а сама книга будет названа как город который будет в ней. Потом необходимо поделить лист на книги по параметру Марка и книга будет называться как Марка которая в ней будет. Заранее благодарна!

  • Александр says:

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

  • Михаил says:

    Здравствуйте! Помогите, пожалуйста, в решении задачи:
    Есть 2 файла. В первом файле хранятся столбцы с данными, файл ежедневно обновляется данными. Во втором — итоговая таблица. Нужно автоматически копировать столбцы из первого файла и вставить в конец таблицы второго.

  • Роман says:

    Помогите, пожалуйста.
    Нужен макрос, чтобы по нажатию, копировал данные из определенного статичного столбца в активный столбец (на котором стоит курсор).
    Заранее, спасибо!

    • excel says:

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

  • ТудаСюда says:

    Добрый день! Вы просто герой! всем отвечаете и помогаете!
    Помогите и мне пожалуйста, Вот код:
    Sub форЮля()
    Range(«A1:G1»).Select
    With Selection.Interior
    .ColorIndex = 6
    .Pattern = xlSolid
    End With
    Selection.Copy
    ChDir «C:\Users\karlov\Desktop\mind»
    Workbooks.Open Filename:=»1″
    Range(«A1»).Select
    ActiveSheet.Paste
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Application.CutCopyMode = False
    End Sub

    как сделать так что бы запись в фаил «1» всегда была на одну строчку ниже?
    2 дня уже не могу сделать , надеюсь на Вас. Спасибо.

    • excel says:

      Попробуйте добавить между
      Range («A1»).Select и ActiveSheet.Paste
      ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select

  • Сабина says:

    ДД!
    спасибо большое за Ваш пост! Нужно было переносить строки из общей таблицы на разные листы другой книги.
    Подскажите, можно ли добавить условие в код? У меня большая таблица хронометража по разным показателям. Возможно ли копирование только тех ячеек значение которых больше 0?

    То, что я имею сейчас:
    Sub Перенос_строк_состав_комм_КМ()
    Workbooks.Open Filename:=C:\1\2.xlsx»
    Workbooks(«2.xlsx»).Worksheets(«приложение 3»).Range(«F30:BC30»).Copy
    Workbooks(«КФ.xlsm»).Activate
    ActiveWorkbook.Worksheets(«составление комм КМ»).Range(«C5»).Select
    ActiveSheet.Paste
    Workbooks(«2.xlsx»).Close
    End Sub

  • Мария says:

    Вложение  .вариант.xls

    Добрый день. Ваш код мне очень подходит. Вопрос, как изменить диапазон ячеек в коде, при условии, что я хочу перенести в другую книгу в определенный лист несколько разных ячеек с одного листа НАПРИМЕР диапазоны B7:С24 и H7:I24 . Подскажите как правильно это нужно указать. Спасибо.

    • excel says:

      Решили вопрос? Вам нужно скопировать сначала один диапазон, потом снова выделить книгу откуда вы копируете, например так
      Workbooks(«Книга1.xlsm»).Activate
      снова повторить копирование уже другого диапазона

      • Мария says:

        Вложение  .вариант-1.xls

        У меня более 30 вкладок в одной книге, и часть ячеек не должна копировать в другую книгу, они должны совместиться. Я уже много перепробовала, но почему то копирует только второй диапазон, а первый будто не видит… например я пишу код
        abook.Worksheets(«3»).Activate
        Range(«B7:C39», «H7:I39»).Copy
        bookconst.Worksheets(«3»).Activate
        Range(«B7»).Select ‘выделяем диапазон
        а копирует он только диапазон «H7:I39», игнорируя диапазон B7:C39

        Так я и не решила эту проблему..

        • Юрий says:

          На мой взгляд у вас проблема о объединенных ячейках. У вас 61 и другие строки объединены. Вы попробуйте вручную выделить диапазон B7:C39 — у вас не получится и у VBA тоже не получается

        • Алексей says:

          Нужно делать по-отдельности. Сначала одни диапазон, потом второй и так далее
          abook.Worksheets («3»).Activate
          Range («B7:C39»).Copy
          bookconst.Worksheets («3»).Activate
          Range («B7»).Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
          Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
          SkipBlanks:=False, Transpose:=False

          После этого снова активируете первую книгу и копируете второй диапазон
          abook.Worksheets («3»).Activate
          Range («H7:I39»).Copy

          • Мария says:

            Эти Варианты я все перепробовала, решение оказалось таким:
            Range(«B9:C2900, D9:E2900, K9:L2900»).Copy
            bookconst.Worksheets(«благ»).Activate
            Range(«B4»).Select ‘встаем на ячейку А1
            При этом в заданных диапазонах не должны быть пересечения объеденных ячеек.
            СПАСИБО АВТОРУ

  • Дмитрий says:

    Добрый день,
    В коде при варианте 1 выводит ошибку 1004, выделяя желтым строку кода:
    Range(«A6»).Select

    Подскажите, плиз, как подправить…

    • excel says:

      В этой строке вряд ли ошибка может быть. Проверил код, должно все работать
      Единственное вот тут неправильное описание
      Workbooks.Open Filename:= «путь к файлу»
      здесь нужно указать не путь к файлу, а только название файла, путь к папке мы указали в чуть выше в коде

      • Дмитрий says:

        Вопрос не актуален, спасибо!
        Решение найдено!

        • excel says:

          Отлично, в чем была причина?

          • Дмитрий says:

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

            Sub Macros1()

            Range(«A1:E1»).Select
            Selection.Copy
            ChDir «C:\Users\50545\Desktop»
            Workbooks.Open Filename:=»123.xlsx»
            ActiveSheet.Range(«A1»).Select

            If ActiveSheet.Range(«A1»).Value = «» Then

            ActiveSheet.Paste
            ActiveWorkbook.Save
            ActiveWorkbook.Close

            Else
            Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select

            ActiveSheet.Paste
            ActiveWorkbook.Save
            ActiveWorkbook.Close

            End If

            End Sub

          • Дмитрий says:

            Создал отдельный модуль для макроса (до этого был в модуле листа)…

      • Дмитрий says:

        Вложение  Book123.zip

        ну и сам файл…

      • Дмитрий says:

        Вложение

        Добрый день,
        К сожалению, ошибку все еще выдает 🙁

        Прикладываю сам файл и принт-скрин…

        Буду признателен за помощь в исправлении…

  • User says:

    Вложение  .xls

    И вот ещё фаил, в дополнение к первому сообщению. Сразу два не смог отправить.

  • User says:

    Вложение  .xls

    Доброго времени суток.

    Подскажите пожалуйста код макроса со следующим функционалом:

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

    На словах макрос я бы описал так:

    Открываем документ «База» вкладка «Лист1» копируем значение ячейки С15, после чего вставляем её в документ «Отчёт» вкладка «Данные» в поле F19.
    Далее
    Открываем документ «База» вкладка «Лист1» копируем значение ячейки С18, после чего вставляем её в документ «Отчёт» вкладка «Данные» в поле D20.
    Далее
    Открываем документ «База» вкладка «Лист1» копируем значение ячейки С24, после чего вставляем её в документ «Отчёт» вкладка «Данные» в поле L3.
    И так далее…

    Да, необходимо копировать только значение (стиль и т.д. не нужно) И если например в базе какая то ячейка стала пустой, то на пустоту необходимо заменить значение, что было прописано ранее в остальных документах.

    В программировании не силён, если можно с кратким объяснением.

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

  • Slava says:

    Добрый вечер. Это опять я.
    Появилась новая задача. Есть файл источник в котором есть данные.
    Тот макрос, который Вы помогли запустить копирует только из этого, определенного файла.
    А можно сделать так, чтобы макрос работал из любого другого файла.
    То есть я копирую макрос в другой файл , а он сохраняет в отдельный.

    Спасибо.

  • slava says:

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

    Sub Кнопка2 Щелчок()

    ‘ Кнопка2_Щелчок Макрос

    ‘ Сочетание клавиш: Ctrl+j

    Range(«A7:J7″).Select
    Selection.Copy
    Workbooks.Open Filename:=»C:\Users\Slava\Desktop\Neuer Ordner\1.xlsm»
    Range(«A1:J1»).Select
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    ActiveWindow.Close
    End Sub

    может быть так проще?

    • excel says:

      Нет, не проще. Проверьте еще раз внимательно. У меня все работает. Данные не заменяются, а вставляются в следующие строку.
      Сейчас, кстати заметил, что надо брать не G5000, а F5000 так как в столбце G ничего не вставляется, поэтому он и заменяет данные, так как последняя строчка всегда одна и та же

      • Slava says:

        Добрый вечер. Хочу Вас поблагодарить. Все получилось.
        Только я методом «тыка» изменил немного код. А именно вот эту строку

        iLastRow = Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Range(«F5000»).End(xlUp).Row + 1

        у Вас стоял («Книга1.xlsm») а я написал («1.xlsm») указал ту книгу в которую производить копирование и всё пошло нормально.

        Еще раз спасибо.

        • excel says:

          Да, все верно. Я просто тестировал на своих файлах и забыл поменять. Удачи!

          • Slava says:

            спасибо. и Вам тоже Удачи!

  • slava says:

    вот так все выглядит

    http://clip2net.com/s/j68yRt

    • excel says:

      Это понятно. Все это находится в Книга1.xlsm? и необходимые данные для копирования находятся на листе 1 и вы выделяете эти данные и потом запускаете макрос?
      У вас макрос привязан к активной ячейки на момент запуска макроса

      • slava says:

        да. все правильно.
        Ставлю курсор в G7 — Книга1.xlsm, а потом нажимаю кнопку. файл 1.xlsm открывается и в него копируются нужные ячейки. после закрывается.
        Я изменяю нужные ячейки в Книга1.xlsm и опять жму на кнопку. Все проходит, но в файле 1.xlsm происходит замена старых значений. а мне нужно , чтобы новые значения помещались в низ. под старую запись.

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

        • excel says:

          Тут видимо дело все таки в строчке, где ищется нужная последняя строка iLastRow
          Попробуйте так прописать:

          iLastRow = Workbooks("Книга1.xlsm").Worksheets("Лист1").Range("G5000").End(xlUp).Row + 1

          G5000 я взял просто с запасом. У вас не должно быть данных больше, чем на 5000 строк, если больше, то число нужно взять больше, Столбец G — этот тот столбец, где указаны данные от которых нужно отступить одну строчку после вставки данных.

  • Slava says:

    Excel. Спасибо за поддержку.

    ругается вот на эту строчку. Цвет желтый.

    Workbooks(«Книга1.xlsm»).Activate

    • excel says:

      Ругаться не должен. У вас файл, где лежат данные (откуда копировать) должен называться Книга1.xlsm либо меняйте на свой. Плюс тут в комментариях кавычки поменялись на другие, нужны двойне запятые, а не елочки

      • slava says:

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

        еще раз спасибо за поддержку.

        • excel says:

          В этой строчке книгу и лист свои правильно указали?
          iLastRow = Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Cells(.Rows.Count, 7).End(xlUp).Row + 1

  • Slava says:

    Здравствуйте!

    Нуждаюсь в Вашей помощи.
    Есть макрос, который копирует нужные ячейки и переносит в сводную таблицу в этом же документе на «Лист2» помещая в таблицу .
    Вопрос. Как сделать всё тоже самое, но чтобы переносилось в другой файл.

    Sub Кнопка6 Щелчок()
    Dim iLastRow As Long

    With Worksheets(«Лист2»)

    iLastRow = .Cells(.Rows.Count, 7).End(xlUp).Row + 1
    .Cells(iLastRow, 6) = ActiveCell
    .Cells(iLastRow, 2) = ActiveCell.Offset(, -1)
    .Cells(iLastRow, 3) = ActiveCell.Offset(, -2)
    .Cells(iLastRow, 5) = ActiveCell.Offset(, -3)
    .Cells(iLastRow, 4) = ActiveCell.Offset(, -4)
    .Cells(iLastRow, 7) = ActiveCell.Offset(, -5)
    .Cells(iLastRow, 1) = ActiveCell.Offset(, -6)

    End With
    End Sub

    Путь к нужному файлу например:C:\Users\Slava\Desktop\test\1.xlsm

    Ищу информацию уже три ночи, но не нахожу. Или мозги не доходят.
    Очень надеюсь на Вашу помощь.

    Заранее благодарен
    Слава

    • excel says:

      Думаю так должно работать. Данные копируются из Книга1.xlsm Лист1 в 1.xlsm Лист1

      Sub Кнопка6()
      Dim iLastRow As Long
      Workbooks.Open Filename:="C:\Users\Slava\Desktop\test\1.xlsm"
      With Worksheets("Лист1")
      
      Workbooks("Книга1.xlsm").Activate
      iLastRow = Workbooks("Книга1.xlsm").Worksheets("Лист1").Cells(.Rows.Count, 7).End(xlUp).Row + 1
      Workbooks("1.xlsm").Worksheets("Лист1").Cells(iLastRow, 6) = ActiveCell
      Workbooks("1.xlsm").Worksheets("Лист1").Cells(iLastRow, 2) = ActiveCell.Offset(, -1)
      Workbooks("1.xlsm").Worksheets("Лист1").Cells(iLastRow, 3) = ActiveCell.Offset(, -2)
      Workbooks("1.xlsm").Worksheets("Лист1").Cells(iLastRow, 5) = ActiveCell.Offset(, -3)
      Workbooks("1.xlsm").Worksheets("Лист1").Cells(iLastRow, 4) = ActiveCell.Offset(, -4)
      Workbooks("1.xlsm").Worksheets("Лист1").Cells(iLastRow, 7) = ActiveCell.Offset(, -5)
      Workbooks("1.xlsm").Worksheets("Лист1").Cells(iLastRow, 1) = ActiveCell.Offset(, -6)
      Workbooks("1.xlsm").Save
      Workbooks("1.xlsm").Close
      End With
      End Sub
      
  • Максим says:

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

  • Максим says:

    Спасибо, что откликнулись.
    К сожалению, файлов несколько. В имени файлов еще имеется «регион 1», «регион 2» и т.д. (которые постоянны). Меняется только дата в имени файла.

  • Максим says:

    Здравствуйте!
    Подскажите, пожалуйста, а как прописать в коде имя файла, из которого копируются данные, если имя файла меняется в зависимости от недели года, т.е. «Данные 01.01.2014-07.01.2014.xlsx» и т.д. в течении года.
    Заранее благодарен.
    Максим

    • excel says:

      Если в папке находится только один файл с таким расширение, как вариант вы можете использовать название в виде звездочки «*.xls», тогда он откроет с любым расширение формата xls

  • Юрий says:

    А если вручную из этого листа скопировать и вставить обычной вставкой, то все нормально копируется?

    • Сергей says:

      Да если вручную то всё отлично копируется…

      • Сергей says:

        Я понял в чём причина такого копирования. Как в коде изменить, чтобы копировалась не определённый диапазон листа, а весь лист, т.е. если бы я вручную кликнул над цифрой 1 и выделил весь лист, а затем его копировал и уже вставил в новый документ!

        • Юрий says:

          Sub Название_Макроса2()
          ‘Открываем файл с которого нужно скопировать данные
          Workbooks.Open Filename:=»C:Данные.xlsx»

          ‘Скопировать нужный диапазон в открывшейся книге на листе 1
          Workbooks(«Данные.xlsx»).Worksheets(«Лист1»).Activate
          Cells.Select
          Selection.Copy

          ‘Активируем нужную нам книгу
          Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Activate
          Cells.Select
          ActiveSheet.Paste

          ‘Закрываем книгу откуда мы скопировали данные
          Workbooks(«credit.xlsx»).Close

          End Sub

  • Сергей says:

    Теперь всё начало вставляться, но как попало!!! Скопирован лист который нужно вставить, его вставляет, но структура вся перековеркана почему то…

  • Сергей says:

    Здравствуйте! А как будет выглядеть код: «Сначало открываем текущий лист, жмём кнопку вставить и с определённго файла который лежит где-то на диске копируется определённый диапазон, далее файл с которого копировали закрывается или даже не открывается для глаза пользователя… И всё на текущем листе мы имеем определённый скопированный диапазон…

    • excel says:

      Добрый день! Дополнил статью ответом на ваш вопрос

      • Сергей says:

        Что-то не получается… Наверное я где-то не то сделал, доходит до выделения копирования диапазона листа с которого нужно скопировать и пишет 400 ошибку.

        Вот такой код я вставил:
        Sub Вставить()
        ‘Открываем файл с которого нужно скопировать данные
        Workbooks.Open Filename:=»C:\Централь — 2с и 1,2,3п.xls»

        ‘Скопировать нужный диапазон в открывшейся книге на листе 1
        Workbooks(«Централь — 2с и 1,2,3п.xls»).Worksheets(«2с и 1п»).Range(«A1:CA1000»).Copy
        ‘Активируем нужную нам книгу
        Workbooks(«Новый бланк.xls»).Activate

        ‘Выделяем и вставляем скопированные данные в ячейку А1
        ActiveWorkbook.Worksheets(«Исковое заявление»).Range(«A1»).Select
        ActiveSheet.Paste

        ‘Закрываем книгу откуда мы скопировали данные
        Workbooks(«Централь — 2с и 1,2,3п.xls»).Close

        End Sub

        Централь — 2с и 1,2,3п.xls — это файл с которого нужно скопировать.

        2с и 1п лист с которого нужно скопировать в вышеназванном файле

        Новый бланк.xls это документ в который нужно скопировать

        Исковое заявление — это лист в файле Новый бланк в который нужно скопировать выделенный выше лист.

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Рекомендуем посмотреть