我正在为报告集构建宏库,但在许多情况下,我在报告中作为示例显示的图像需要调整为以下像素宽度之一:
- 300像素
- 400像素
- 500像素
- 600像素
- 700像素
我尝试创建一个宏,通过像素宽度更改每个图像的确切宽度,但它似乎忽略了纵横比并拉伸图像。是否可以使用宏锁定纵横比?
实际上,我想要的只是一个非常短的宏,它将图像的宽度调整 [X] 像素,并且什么都不做 - 但是,与任何其他调整大小的宏一样,我不断得到高度的怪异。
是否有仅按像素宽度调整大小的宏语言?
这是我一直在使用的百分比大小代码示例:
Sub FNG_setsize75percent()
'
' FNG_setsize75percent Macro
'
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^g"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Dim PercentSize As Integer
PercentSize = 75
If Selection.InlineShapes.Count > 0 Then
Selection.InlineShapes(1).ScaleHeight = PercentSize
Selection.InlineShapes(1).ScaleWidth = PercentSize
Else
Selection.ShapeRange.ScaleHeight Factor:=(PercentSize / 100), _
RelativeToOriginalSize:=msoCTrue
Selection.ShapeRange.ScaleWidth Factor:=(PercentSize / 100), _
RelativeToOriginalSize:=msoCTrue
End If
End With
Selection.InlineShapes(1).LockAspectRatio = msoTrue
End Sub
现在,如果我真的可以使用类似的东西,我的猜测是我可以使用类似的东西:
Sub Img500px
Selection.InlineShapes(1).LockAspectRatio = msoTrue
Selection.InlineShapes(1).Width = 375#
Selection.InlineShapes(1).Height = (Selection.InlineShapes(1).AbsoluteWidth / 375#) * Selection.InlineShapes(1).Height
End Sub
除了一个小问题:它仍然不起作用。
Sub Img500px
With Selection.Find
.Text = "^g"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Selection.InlineShapes(1).Width = 375#
Selection.InlineShapes(1).Height = (Selection.InlineShapes(1).Width / 375#) * Selection.InlineShapes(1).Height
End With
Selection.InlineShapes(1).LockAspectRatio = msoTrue
End Sub
这也不起作用。
因此,虽然“这是一个简单的数学问题”似乎可以解决它,但它仍然没有按预期工作。
这真的很简单:
500 像素/英寸/任何锁定纵横比,根据纵横比调整高度。
我同意这应该是一个“简单的数学问题”,但代码仍然没有做你应该做的事情。
当然,我可能只使用外部宏程序,而不是再尝试使用它。