Vba excel скопировать диапазон ячеек в другую книгу

Задача состоит в том, чтобы скопировать определенный диапазон текущего листа, открыть другую книгу, и вставить эти скопированные данные в определенную ячейку, сохранить этот файл и закрыть. Ниже приведен код 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:UsersUserDesktop1.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

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

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

Sub Do_It()
'
' Do_It Макрос
'

'

    Sheets("Результат").Select
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Delete Shift:=xlUp
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.ColumnWidth = 2.43
    Range("B2:C9").Select
    Columns("B:B").ColumnWidth = 25.57
    ActiveWindow.ScrollWorkbookTabs Sheets:=-9
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "ПЕРЕВОЗКА"
    Range("B3").Select
    ActiveCell.FormulaR1C1 = "ЭКСПЕДИРОВАНИЕ"
    Range("B4").Select
    ActiveCell.FormulaR1C1 = "ДОП.УСЛУГИ"
    Range("B5").Select
    ActiveCell.FormulaR1C1 = "СТРАХОВКА"
    Range("B6").Select
    ActiveCell.FormulaR1C1 = "ОТВЕТХРАНЕНИЕ"
    Range("B7").Select
    ActiveCell.FormulaR1C1 = "РЕЙСЫ"
    Range("B8").Select
    ActiveCell.FormulaR1C1 = "ОПЛАТЫ"
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "ГЛАВДОСТАВКЕ"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "ПАРТНЕРУ"
    Range("C3").Select
    Application.WindowState = xlNormal
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(""ИТОГО:"",'ГД - Перевозка'!C[14]:C[18],5,FALSE)"
    Range("C4").Select
    ActiveWindow.ScrollWorkbookTabs Sheets:=-6
    Sheets("ГД - Перевозка").Select
    ActiveWindow.ScrollWorkbookTabs Sheets:=6
    Sheets("Результат").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(""ИТОГО:"",'ГД - Эксп-е'!C[4]:C[6],3,FALSE)"
    Range("C5").Select
    Sheets("ГД - Эксп-е").Select
    Sheets("Результат").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(""ИТОГО:"",'ГД - Доп. услуги'!C[4]:C[6],3,FALSE)"
    Range("C6").Select
    ActiveWindow.ScrollWorkbookTabs Sheets:=-6
    Sheets("ГД - Доп. услуги").Select
    ActiveWindow.ScrollWorkbookTabs Sheets:=6
    Sheets("Результат").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(""ИТОГО:"",'ГД - Страховка'!C[1]:C[2],2,FALSE)"
    Range("C7").Select
    Sheets("ГД - ОТВ").Select
    ActiveWindow.ScrollWorkbookTabs Sheets:=5
    Sheets("Результат").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(""ИТОГО:"",'ГД - ОТВ'!C[1]:C[2],2,FALSE)"
    Range("C8").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("C9").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(""ИТОГО:"",'ГД - Оплаты'!C[3]:C[4],2,FALSE)"
    Range("C10").Select
    Sheets("ГД - Оплаты").Select
    Sheets("Результат").Select
    Range("D3").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(""ИТОГО:"",'П-р - Перевозка'!C[13]:C[17],5,FALSE)"
    Range("D4").Select
    Sheets("Результат").Select
    Range("D4").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(""ИТОГО:"",'П-р - Эксп-е'!C[3]:C[5],3,FALSE)"
    Range("D5").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(""ИТОГО:"",'П-р - Доп. услуги'!C[3]:C[5],3,FALSE)"
    Range("D6").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("D7").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(""ИТОГО:"",'П-р - ОТВ'!C:C[1],2,FALSE)"
    Range("D8").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(""ИТОГО:"",'П-р - Рейсы'!C[-1]:C,2,FALSE)"
    Range("D9").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(""ИТОГО:"",'П-р - Оплаты'!C[2]:C[3],2,FALSE)"
    Range("C10").Select
    ActiveCell.FormulaR1C1 = "ИТОГО:"
    Range("D10").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(SUM(R[-7]C[-1]:R[-1]C[-1])-SUM(R[-7]C:R[-1]C)=R[2]C[1],SUM(R[-7]C[-1]:R[-1]C[-1])-SUM(R[-7]C:R[-1]C),""ОШИБКА"")"
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
    Range("D10").Select
    Rows("11:12").Select
    Selection.Delete Shift:=xlUp
    Dim Ilastrow&
    Ilastrow = Cells(Rows.Count, 1).End(xlUp).Row
    Range("D12:E12" & Ilastrow).Cut
    Range("C12").Select
    ActiveSheet.Paste
    Dim objA As Range, objB As Range, objC As Range, objD As Range, objE As Range
    Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = "ИТОГО ПО СЧЕТУ:"
    Set objA = ActiveSheet.UsedRange.Find("ИТОГО:")
    Set objB = ActiveSheet.UsedRange.Find("ИТОГО ПО СЧЕТУ:")
    If objA.Offset(0, 1) = objB.Offset(-1, 1) Then objB.Offset(0, 1) = objA.Offset(0, 1)
    If objA.Offset(0, 1) <> objB.Offset(-1, 1) Then objB.Offset(0, 1) = WorksheetFunction.Sum(objA.Offset(0, 1), Range(objA.Offset(2, 1), objB.Offset(-1, 1)))
    Sheets("ГД - Перевозка").Select
    ActiveSheet.Range("$A$1:$X$144").AutoFilter Field:=23, Criteria1:="=ДА", _
    Operator:=xlOr, Criteria2:="="
    Sheets("П-р - Перевозка").Select
    ActiveWindow.ScrollWorkbookTabs Sheets:=2
    ActiveSheet.Range("$A$1:$X$236").AutoFilter Field:=23, Criteria1:="=ДА", _
    Operator:=xlOr, Criteria2:="="
    objB.Offset(2, 0) = "КУБЫ"
    objB.Offset(2, 1) = "ПРИБЫЛЬ"
    objB.Offset(2, 2) = "ФРАХТ"
    objB.Offset(3, -1) = "ГД ПЕРЕВОЗКА"
    objB.Offset(4, -1) = "П-Р ПЕРЕВОЗКА"
    objB.Offset(3, 0).FormulaR1C1 = "=SUBTOTAL(9,'ГД - Перевозка'!C[6])"
    objB.Offset(3, 1).FormulaR1C1 = "=SUBTOTAL(9,'ГД - Перевозка'!C[16])-VLOOKUP(""ИТОГО:"",'ГД - Перевозка'!C[13]:C[18],4,FALSE)-(SUBTOTAL(9,'ГД - Перевозка'!C[18])-VLOOKUP(""ИТОГО:"",'ГД - Перевозка'!C[13]:C[18],6,FALSE))"
    objB.Offset(3, 2).FormulaR1C1 = "=SUBTOTAL(9,'ГД - Перевозка'!C[14])-VLOOKUP(""ИТОГО:"",'ГД - Перевозка'!C[12]:C[17],3, FALSE)-SUBTOTAL(9,'ГД - Перевозка'!C[11])"
    objB.Offset(4, 0).FormulaR1C1 = "=SUBTOTAL(9,'П-Р - Перевозка'!C[6])"
    objB.Offset(4, 1).FormulaR1C1 = "=SUBTOTAL(9,'П-Р - Перевозка'!C[16])-VLOOKUP(""ИТОГО:"",'П-Р - Перевозка'!C[13]:C[18],4,FALSE)-(SUBTOTAL(9,'П-Р - Перевозка'!C[18])-VLOOKUP(""ИТОГО:"",'П-Р - Перевозка'!C[13]:C[18],6,FALSE))"
    objB.Offset(4, 2).FormulaR1C1 = "=SUBTOTAL(9,'П-Р - Перевозка'!C[14])-VLOOKUP(""ИТОГО:"",'П-Р - Перевозка'!C[12]:C[17],3, FALSE)-SUBTOTAL(9,'П-Р - Перевозка'!C[11])"
    Dim wb As Workbook, s
    s = MSGBOX("ВНЕСТИ ИЗМЕНЕНИЯ В ВАЛ?", vbYesNo + vbExclamation + vbDefaultButton1, "Что делать?")
    If s = vbNo Then
    objB.Offset(5, -1) = "ИТОГО ВАЛ:"
    Sheets("Результат").Select
    Set objC = ActiveSheet.UsedRange.Find("КУБЫ")
    Set objD = ActiveSheet.UsedRange.Find("ИТОГО ВАЛ:")
    objD.Offset(0, 1) = WorksheetFunction.Sum(Range(objC.Offset(1, 0), objD.Offset(-1, 1)))
    objD.Offset(0, 2) = WorksheetFunction.Sum(Range(objC.Offset(1, 1), objD.Offset(-1, 2)))
    objD.Offset(0, 3) = WorksheetFunction.Sum(Range(objC.Offset(1, 2), objD.Offset(-1, 3)))
    'Действия, если "нет"
    Else
    With Application.FileDialog(msoFileDialogOpen)
    .Show
    If .SelectedItems.Count = 0 Then Exit Sub Else Set wb = Workbooks.Open(.SelectedItems(1))
    End With
        ' Выбираем диапазон. Копипастим.
        ' Макрос далее подбивает сумм значений (с этим Вы справились)
    wb.Close False 'Закрываем книгу без сохранения
    End If

    
End Sub

Home / VBA / VBA Copy Range to Another Sheet + Workbook

To copy a cell or a range of cells to another worksheet you need to use the VBA’s “Copy” method. In this method, you need to define the range or the cell using the range object that you wish to copy and then define another worksheet along with the range where you want to paste it.

Copy a Cell or Range to Another Worksheet

Range("A1").Copy Worksheets("Sheet2").Range("A1")
  1. First, define the range or the cell that you want to copy.
    1-define-the-range-or-cell
  2. Next, type a dot (.) and select the copy method from the list of properties and methods.
    2-type-a-dot-and-select-the-copy-method
  3. Here you’ll get an intellisense to define the destination of the cell copied.
    3-define-the-destination-of-the-copied-cell
  4. From here, you need to define the worksheet and then the destination range.
    4-define-the-worksheet-and-than-destination-range

Now when you run this code, it will copy cell A1 from the active sheet to the “Sheet2”. There’s one thing that you need to take care that when you copy a cell and paste it to a destination it also pastes the formatting there.

But if you simply want to copy the value from a cell and paste it into the different worksheets, consider the following code.

Worksheets("Sheet2").Range("A1") = Range("A1").Value

This method doesn’t use the copy method but simply adds value to the destination worksheet using an equal sign and using the value property with the source cell.

Copy Cell from a Different Worksheet

Now let’s say you want to copy a cell from a worksheet that is not active at the time. In this case, you need to define the worksheet with the source cell. Just like the following code.

Worksheets("sheet1").Range("A1").Copy Worksheets("Sheet2").Range("A1")

Copy a Range of Cells

Range("A1:A10").Copy Worksheets("Sheet2").Range("A1:A10")
Range("A1:A10").Copy Worksheets("Sheet2").Range("A1")

Copy a Cell to a Worksheet in Another Workbook

When workbooks are open but not saved yet.

Workbooks("Book1").Worksheets("Sheet1").Range("A1").Copy _
Workbooks("Book2").Worksheets("Sheet1").Range("A1")

When workbooks are open and saved.

Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy _
Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1")

Copy a Cell to a Worksheet in Another Workbook which is Closed

'to open the workbook that is saved in a folder on your system _
change the path according to the location you have in your _
system
Workbooks.Open "C:UsersDellDesktopmyFile.xlsx"

'copies cell from the book1 workbook and copy and paste _
it to the workbook myFile
Workbooks("Book1").Worksheets("Sheet1").Range("A1").Copy _
Workbooks("myFile").Worksheets("Sheet1").Range("A1")

'close the workbook and after saving
Workbooks("myFile").Close SaveChanges:=True

Related: How to Open a Workbook using VBA in Excel

More Tutorials

    • Count Rows using VBA in Excel
    • Excel VBA Font (Color, Size, Type, and Bold)
    • Excel VBA Hide and Unhide a Column or a Row
    • Excel VBA Range – Working with Range and Cells in VBA
    • Apply Borders on a Cell using VBA in Excel
    • Find Last Row, Column, and Cell using VBA in Excel
    • Insert a Row using VBA in Excel
    • Merge Cells in Excel using a VBA Code
    • Select a Range/Cell using VBA in Excel
    • SELECT ALL the Cells in a Worksheet using a VBA Code
    • ActiveCell in VBA in Excel
    • Special Cells Method in VBA in Excel
    • UsedRange Property in VBA in Excel
    • VBA AutoFit (Rows, Column, or the Entire Worksheet)
    • VBA ClearContents (from a Cell, Range, or Entire Worksheet)
    • VBA Enter Value in a Cell (Set, Get and Change)
    • VBA Insert Column (Single and Multiple)
    • VBA Named Range | (Static + from Selection + Dynamic)
    • VBA Range Offset
    • VBA Sort Range | (Descending, Multiple Columns, Sort Orientation
    • VBA Wrap Text (Cell, Range, and Entire Worksheet)
    • VBA Check IF a Cell is Empty + Multiple Cells

    ⇠ Back to What is VBA in Excel

    Helpful Links – Developer Tab – Visual Basic Editor – Run a Macro – Personal Macro Workbook – Excel Macro Recorder – VBA Interview Questions – VBA Codes

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    Sub asdf()
    Dim x As Integer, z As Integer, y As Integer, WB1 As Workbook, Wb2    As Workbook
    Dim Sh1 As Worksheet, Sh2 As Worksheet
    Set WB1 = Workbooks("тест1.xlsm")
    Set Wb2 = Workbooks("тест2.xlsm")
     
    WB1.Activate
    x = Cells(Rows.Count, 1).End(xlUp).Row
    Wb2.Activate
    y = Cells(Rows.Count, 1).End(xlUp).Row
    z = Rows("1:1").Find(What:="раз", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Column
    WB1.Activate
    WB1.Sheets(1).Range(Cells(x + 1, 1), Cells(x + y - 1, 1)).Value = Wb2.Sheets(1).Range(Cells(2, z), Cells(y, z)).Value ' первый вариант копирования
    Wb2.Activate
    Wb2.Sheets(1).Range(Cells(2, z), Cells(y, z)).Copy WB1.Sheets(1).Range(Cells(x + 1, 1), Cells(x + y - 1, 1)) 'второй вариант копирования
    End Sub

    To answer your question «Why is B running, but not A»..

    In A:
    currentWorksheet = xlWorkBook.Sheets.Item("Command Group")

    First, you are missing SET for your object assignment. Secondly, you are using Workbook.Sheets.Item() which returns a Sheets object. A Sheets object can represent either a chart sheet, or a work sheet, and therefore does not have a .Range() method.

    You can verify this by stepping over this code:

    Dim currentWorksheet As Sheets
    Set currentWorksheet = ThisWorkbook.Sheets.Item("Command Group")
    excelRange = currentWorksheet.Range("A1:A21")
    

    It will error, and tell you that the method is not found.

    To Fix A: Ensure you get back a Worksheet object by using strong typing.

    Dim currentWorksheet as Worksheet
    Set currentWorksheet = ThisWorkbook.Sheets.Item("Command Group")
    

    To fix future code and ease the debugging process I highly recommend always declaring Option Explicit at the top of all your modules.

    For brevity you can shorten your code to:

    Dim currentWorksheet as Worksheet
    Set currentWorksheet = ThisWorkbook.Sheets("Command Group")
    

    Bottom line: Learn 3 different ways to copy and paste cells or ranges in Excel with VBA Macros.  This is a 3-part video series and you can also download the file that contains the code.

    Skill level: Beginner

    3 Ways to Copy and Paste in Excel with VBA Macros

    Copy & Paste: The Most Common Excel Action

    Copy and paste is probably one of the most common actions you take in Excel.  It’s also one of the most common tasks we automate when writing macros.

    There are a few different ways to accomplish this task, and the macro recorder doesn’t always give you the most efficient VBA code.

    In the following three videos I explain:

    • The most efficient method for a simple copy and paste in VBA.
    • The easiest way to paste values.
    • How to use the PasteSpecial method for other paste types.

    You can download the file I use in these videos below.  The code is also available at the bottom of the page.

    Video #1: The Simple Copy Paste Method

    You can watch the playlist that includes all 3 videos at the top of this page.

    Video #2: An Easy Way to Paste Values

    Video #3: The PasteSpecial Method Explained

    VBA Code for the Copy & Paste Methods

    Download the workbook that contains the code.

    '3 Methods to Copy & Paste with VBA
    'Source: https://www.excelcampus.com/vba/copy-paste-cells-vba-macros/
    'Author: Jon Acampora
    
    Sub Range_Copy_Examples()
    'Use the Range.Copy method for a simple copy/paste
    
        'The Range.Copy Method - Copy & Paste with 1 line
        Range("A1").Copy Range("C1")
        Range("A1:A3").Copy Range("D1:D3")
        Range("A1:A3").Copy Range("D1")
        
        'Range.Copy to other worksheets
        Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet2").Range("A1")
        
        'Range.Copy to other workbooks
        Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy _
            Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1")
    
    End Sub
    
    
    Sub Paste_Values_Examples()
    'Set the cells' values equal to another to paste values
    
        'Set a cell's value equal to another cell's value
        Range("C1").Value = Range("A1").Value
        Range("D1:D3").Value = Range("A1:A3").Value
         
        'Set values between worksheets
        Worksheets("Sheet2").Range("A1").Value = Worksheets("Sheet1").Range("A1").Value
         
        'Set values between workbooks
        Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").Value = _
            Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value
            
    End Sub
    
    
    Sub PasteSpecial_Examples()
    'Use the Range.PasteSpecial method for other paste types
    
        'Copy and PasteSpecial a Range
        Range("A1").Copy
        Range("A3").PasteSpecial Paste:=xlPasteFormats
        
        'Copy and PasteSpecial a between worksheets
        Worksheets("Sheet1").Range("A2").Copy 
        Worksheets("Sheet2").Range("A2").PasteSpecial Paste:=xlPasteFormulas
        
        'Copy and PasteSpecial between workbooks
        Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy
        Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteFormats
        
        'Disable marching ants around copied range
        Application.CutCopyMode = False
    
    End Sub

    Paste Data Below the Last Used Row

    One of the most common questions I get about copying and pasting with VBA is, how do I paste to the bottom of a range that is constantly changing?  I first want to find the last row of data, then copy & paste below it.

    To answer this question, I created a free training video on how to paste data below the last used row in a sheet with VBA.  Can I send you the video?  Please click the image below to get the video.

    Paste Data Below Last Used Row VBA Free Training

    Free Training on Macros & VBA

    The 3 videos above are from my VBA Pro Course.  If you want to learn more about macros and VBA then checkout my free 3-part video training series.

    I will also send you info on the VBA Pro Course, that will take you from beginner to expert.  Click the link below to get instant access.

    Free Training on Macros & VBA

    Please leave a comment below with any questions.  Thanks!

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

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

    Вариант 2:

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

    Sub Название_Макроса2()`Открываем файл с которого нужно скопировать данныеWorkbooks.Open Filename:=»C:Данные.xlsx»`Скопировать нужный диапазон в открывшейся книге на листе 1Workbooks(«Данные.xlsx»).Worksheets(«Лист1»).Range(«A16:E16»).Copy`Активируем нужную нам книгуWorkbooks(«Книга1.xlsm»).Activate`Выделяем и вставляем скопированные данные в ячейку А1ActiveWorkbook.Worksheets(«Лист1»).Range(«A1»).SelectActiveSheet.Paste`Закрываем книгу откуда мы скопировали данныеWorkbooks(«Данные.xlsx»).CloseEnd Sub

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

    Sub Копируем_листы_в_другую_книгу()Dim bookconst As WorkbookDim abook As WorkbookSet abook = ActiveWorkbook `присваиваем перменную активной книгеSet bookconst = Workbooks.Open(«C:UsersUserDesktop1.xlsx») `присваиваем перменную книге куда необходимо копировать данные`переходим в активную книгу откуда необходимо скопировать

    данныеabook.Worksheets(«Лист1»).ActivateRange(«A1:I23»).Copy `копируем определенный диапазон листа, укажите свой диапазонbookconst.Worksheets(«Лист1»).Activate `активируем лист куда необходимо вставить данныеRange(«A1:I23»).Select `встаем на ячейку А1Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False`вставляем только форматы ячеекSelection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _SkipBlanks:=False, Transpose:=False`второй листabook.Worksheets(«Лист2»).ActivateRange(«A1:I23»).Copybookconst.Worksheets(«Лист2»).ActivateRange(«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»).ActivateRange(«A1:I23»).Copybookconst.Worksheets(«Лист3»).ActivateRange(«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.Closeabook.ActivateEnd Sub

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

    Понравилась статья? Поделить с друзьями:
  • Vba excel скопировать выделенный диапазон
  • Vba excel скопировать вставить диапазон
  • Vba excel скопировать все листы в другую книгу
  • Vba excel скопировать range
  • Vba excel сколько символов в ячейке