我希望为添加到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
答案 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