在excel、word、ppt等软件中插入图片后,都可以从图片的大小和位置属性中查看到图片的原图尺寸,如下图所示:
其中数字1处显示的是图片的原始尺寸,数字2处显示的是图片的现在尺寸,数字3处显示的是图片的缩放比例。
在vba中,图片对象Shape的Height属性和Width属性表示的是数字2处的图片的现在的尺寸。
如果要获取图片的原始尺寸,可以利用ScaleWidth方法和ScaleHeight方法。
这两个方法分别可以将图片的宽度和高度等比例缩放,还可以选择是基于现在的尺寸还是图片的原始尺寸缩放。
代码如下:
Sub QQ1722187970() Dim oSP As Shape Dim oWK As Worksheet Set oWK = Excel.ActiveSheet Set oSP = oWK.Shapes(1) With oSP '之前的高和宽 iH = .Height iW = .Width .ScaleHeight 1, msoCTrue .ScaleWidth 1, msoCTrue '原来的高和宽 iHO = .Height iWO = .Width '输出原始的图片的高和宽,以厘米为单位 Debug.Print Point2Centimeters(iHO), Point2Centimeters(iWO) '重置为图片一开始的尺寸 .Height = iH .Width = iW End With End Sub Function Point2Inch(ByVal dPoint As Double) 'Point转Inch Point2Inch = dPoint * 1 / 72 End Function Function Inch2Point(ByVal dInch As Double) 'Inch转Point Inch2Point = dInch * 72 End Function Function Point2Centimeters(ByVal dPoint As Double) 'Point转Centimeter Point2Centimeters = dPoint * 1 / 72 * 2.54 End Function Function Centimeters2Point(ByVal dCentimeter As Double) 'Centimeter转Point Centimeters2Point = dCentimeter * 72 * 1 / 2.54 End Function
发表评论