首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OLEObject高度和宽度不一致

OLEObject高度和宽度不一致
EN

Stack Overflow用户
提问于 2015-02-26 18:37:35
回答 1查看 3.8K关注 0票数 3

目前,我正在将PDF文件和图像作为OLE对象附加到我的excel工作表中,并试图控制它们的大小。(我希望图标沿着网格出现)

问题是,即使每个OLEObject都应该满足以下规范,但有时它们的大小是不同的。一些pdfs具有更大的长度,或者比图像文件更宽。

我如何确保它们是一致的?

代码语言:javascript
运行
复制
Public Sub OLEObjectNamesReturn()

Dim Count As Integer
Dim Space As Integer
Count = 23
Space = 0

For Each oleObj In ActiveSheet.OLEObjects
    Select Case oleObj.Name
    Case "CheckBox21"
    Case "CheckBox22"
    Case "CommandButton21"
    Case "CommandButton22"
    Case Else
        Dim ObjectName As String
        ObjectName = oleObj.Name
        Set oCell = ActiveSheet.Range("P" & Count)
        ActiveSheet.Shapes.Range(Array(ObjectName)).Select
        ActiveSheet.Shapes(ObjectName).Height = 30
        ActiveSheet.Shapes(ObjectName).Width = 30
        ActiveSheet.Shapes(ObjectName).Top = oCell.Top + 7 + Space
        ActiveSheet.Shapes(ObjectName).Left = oCell.Left + 7
        Count = Count + 1
        Space = Space + 15
    End Select
Next
End Sub
EN

Stack Overflow用户

回答已采纳

发布于 2015-02-26 20:00:16

默认情况下,形状的纵横比(关系W/H) 锁定.因此,实际上,您的.Height.Width设置都将更改两个维度(除非它们从一开始就是正方形的)。如果你想要完美的平方,无论你的形状的原始W/H比是什么,解锁高宽比。

建议:

代码语言:javascript
运行
复制
Sub Test()
Dim OleObj As OLEObject

    Set OleObj = ActiveSheet.OLEObjects(1)     ' embedded PDF A4 ... not icon
    OleObj.ShapeRange.LockAspectRatio = msoFalse
    OleObj.Height = 30
    OleObj.Width = 30

End Sub

测试了PDF最初的A4大小..。一个人不必喜欢最后的样子;-)

如果您想要保持高宽比,但仍然希望将您的OLEObject安装到30x30网格中,则需要将一个设置应用于较大的维度。

代码语言:javascript
运行
复制
' ....

If OleObj.Width > OleObj.Height Then
    OleObj.Width = 30
Else
    OleObj.Height = 30
End If

' ....

然后-水平中心的对象,您将添加(30 - OLEObj.Width)/2oCell.Left等.

票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28750196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档