Страницы: 1
RSS
Как скопировать рисунок с одного листа на другой, не активируя эти листы?
 
Добрый день!
Есть задача скопировать рисунок с одного листа на другой, макрорекордер выдал такое:
Код
Sub Макрос2()
    Sheets("Лист1").Select
    ActiveSheet.Shapes.Range(Array("Группа 1")).Select
    Selection.Copy
    Sheets("Лист2").Select
    Sheets("Лист2").Range("d10").Select
    ActiveSheet.Paste
    Selection.ShapeRange.IncrementLeft 183
    Selection.ShapeRange.IncrementTop 96
    Selection.ShapeRange.ScaleWidth 0.5, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleHeight 0.5, msoFalse, _
        msoScaleFromBottomRight
End Sub


Как сделать "тихое" копирование без тупой активации листов и рисунка? Пример в файле.
 
Код
Sub Макрос2()
Dim Shp As Shape
    
    Set Shp = Sheets("Лист1").Shapes("Группа 1")
    Shp.Copy
    Sheets("Лист2").Range("D10").PasteSpecial xlPasteAll
End Sub
 
Код
Sub Макрос3()
    Sheets("Лист1").Shapes("Группа 1").Copy
    Sheets("Лист2").Paste Destination:=Range("D10")
End Sub

 
New, МатросНаЗебре,  Спасибо, а как менять размеры и двигать фигуру на неактивном Листе2 без непосредственного Selection?
 
Код
Sub Макрос4()
    With Sheets("Лист2").Shapes("Группа 1")
        .IncrementLeft 183
        .IncrementTop 96
        .ScaleWidth 0.5, msoFalse, msoScaleFromTopLeft
        .ScaleHeight 0.5, msoFalse, msoScaleFromBottomRight
    End With
End Sub
 
МатросНаЗебре, Спасибо, работает.
Изменено: Михаил - 09.06.2021 13:37:27
 
Код
Sub Макрос4()
    With Sheets("Лист2")
        With .Shapes(.Shapes.Count)
            .IncrementLeft 183
            .IncrementTop 96
            .ScaleWidth 0.5, msoFalse, msoScaleFromTopLeft
            .ScaleHeight 0.5, msoFalse, msoScaleFromBottomRight
        End With
    End With
End Sub
 
МатросНаЗебре, Запутался сам и путаю остальных. Имя меняется при вставке методом Sheets("Лист2").Range("D10").PasteSpecial, Ваш вариант работает.
Страницы: 1
Наверх