【问题标题】:Copy and range of cells as a picture with a defined width Locked aspect ratio复制和范围的单元格作为具有定义宽度的图片锁定纵横比
【发布时间】:2020-04-04 16:14:07
【问题描述】:

显示的宏成功地确定了工作表的名称和该工作表中的命名单元格范围,然后将该范围复制到与图片相同的工作簿中的另一个工作表(概述),同时为图片设置定义的宽度并锁定它纵横比。

Sub Copy_Dock_OptionsNew()  'Copy relevant Drive on Dock Options drawing and prices
                        'Use Dock Size to select correct input sheet

Dim dws, sws As Worksheet
Dim DrawingCode, swsName As String
Dim i As Integer

Application.ScreenUpdating = False

Set dws = Worksheets("Overview")

With dws

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Determine Drawing Range Code
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    DrawingCode = "DOD" & Range("Dock_size") & "xOptions"

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Determine Source Worksheet name (= DOD & Dock_Size value
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    swsName = "DOD" & dws.Range("Dock_Size")

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Copy relevant dock summary drawing to Overview sheet
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    Worksheets(swsName).Range(DrawingCode).CopyPicture xlScreen, xlPicture
    dws.Range("U13").Select
    dws.Paste
    Selection.ShapeRange.LockAspectRatio = True
    Selection.ShapeRange.Width = 420

End With
End Sub

这使用 Select 来定义我不想使用的粘贴区域,因此尝试了以下方法。这行得通,但是如何固定宽度并锁定纵横比?

Sub Copy_Dock_OptionsNew()  'Copy relevant Drive on Dock Options drawing and prices
                        'Use Dock Size to select correct input sheet

Dim dws, sws As Worksheet
Dim DrawingCode, swsName As String
Dim i As Integer

Application.ScreenUpdating = False

Set dws = Worksheets("Overview")

With dws

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Determine Drawing Range Code
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    DrawingCode = "DOD" & Range("Dock_size") & "xOptions"

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Determine Source Worksheet name (= DOD & Dock_Size value
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    swsName = "DOD" & dws.Range("Dock_Size")

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Copy relevant dock summary drawing to Overview sheet
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    Worksheets(swsName).Range(DrawingCode).CopyPicture _
       Appearance:=xlScreen, _
       Format:=xlPicture
    dws.Paste _
        Destination:=dws.Range("U13")
End With
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试下面的代码...

    With dws
        .Paste Destination:=.Range("U13")
        With .Shapes(.Shapes.Count)
            .LockAspectRatio = msoTrue
            .Width = 420
        End With
    End With
    

    不过,粘贴图片后,纵横比似乎已被锁定。

    【讨论】:

    • 这行得通,正如您所暗示的,不需要 LockAspectRatio。
    • @JeffH,欢迎加入!如果这个答案解决了问题,请不要忘记accepting it
    猜你喜欢
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 2021-12-21
    • 2013-09-19
    相关资源
    最近更新 更多