如何为新的OLEObject添加的附件解锁宽高比?

时间:2019-06-17 14:29:20

标签: excel vba

我希望为添加到excel工作表的每个新附件解锁纵横比。我不确定解锁所有对象的纵横比是否更容易,还是解锁通过代码添加的每个新对象是否更容易。

我知道如何更改一个对象的纵横比,但是我需要为图纸中的所有对象或插入的每个新对象更改它。

Sub Macro1()
    Range("X" & ActiveCell.Row).Select

    Dim vFile As Variant, Sh As Object
    vFile = Application.GetOpenFilename("All Files,*.*", Title:="Find file to insert")
    If LCase(vFile) = "false" Then Exit Sub
    ActiveSheet.OLEObjects.Add Filename:=vFile, Link:=False, DisplayAsIcon:=True, IconFileName:= _
        "C:\WINDOWS\Installer\{90110409-6000-11D3-8CFE-0150048383C9}\xlicons.exe", _
        IconIndex:=0, IconLabel:=vFile

    Dim OleObj As OLEObject 'code works for one set object(1), I need for all

    Set OleObj = ActiveSheet.OLEObjects(1)
    OleObj.ShapeRange.LockAspectRatio = msoFalse
    OleObj.Height = 10
    OleObj.Width = 30
End Sub

1 个答案:

答案 0 :(得分:0)

请注意,Application.GetOpenFilename method返回的是布尔值False而不是字符串"false",因此您需要正确检查If vFile = False Then …

OLEObjects.Add返回新添加的OLE对象:

  

返回值
  代表新的OLE对象的OLEObject对象。

该返回值可以直接设置为变量OleObj

Set OleObj = ActiveSheet.OLEObjects.Add(…)

因此,您可以根据需要为每个添加的OLE对象设置属性。

Sub Macro1()
    Range("X" & ActiveCell.Row).Select

    Dim vFile As Variant, Sh As Object
    vFile = Application.GetOpenFilename("All Files,*.*", Title:="Find file to insert")
    If vFile = False Then Exit Sub

    Dim OleObj As OLEObject
    Set OleObj = ActiveSheet.OLEObjects.Add(Filename:=vFile, Link:=False, DisplayAsIcon:=True, IconFileName:= _
        "C:\WINDOWS\Installer\{90110409-6000-11D3-8CFE-0150048383C9}\xlicons.exe", _
        IconIndex:=0, IconLabel:=vFile)
    OleObj.ShapeRange.LockAspectRatio = msoFalse
    OleObj.Height = 10
    OleObj.Width = 30
End Sub