Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找Powerpoint VBA MSOLINKEDPPICTURE的原始比例_Vba_Powerpoint_Scale - Fatal编程技术网

查找Powerpoint VBA MSOLINKEDPPICTURE的原始比例

查找Powerpoint VBA MSOLINKEDPPICTURE的原始比例,vba,powerpoint,scale,Vba,Powerpoint,Scale,我有一个更新PowerPoint演示文稿中所有链接的例程。但是,如果组成链接的图像已经调整大小,它们将以相同的大小出现,这将使它们变形 我希望确定图像链接的原始比例,然后在更新后,将其重置为该比例(并非所有图像的比例都相同,因此我不能简单地将它们重新缩放为100%或其他比例) ScaleWidth和ScaleHeight方法似乎没有任何可读取的相关属性 Dim objPres作为对象 作为对象的Dim objSlide 作为对象的暗淡对象形状 将myPath设置为字符串 将myName设置为字

我有一个更新PowerPoint演示文稿中所有链接的例程。但是,如果组成链接的图像已经调整大小,它们将以相同的大小出现,这将使它们变形

我希望确定图像链接的原始比例,然后在更新后,将其重置为该比例(并非所有图像的比例都相同,因此我不能简单地将它们重新缩放为100%或其他比例)

ScaleWidth和ScaleHeight方法似乎没有任何可读取的相关属性

Dim objPres作为对象
作为对象的Dim objSlide
作为对象的暗淡对象形状
将myPath设置为字符串
将myName设置为字符串
尺寸值宽度与长度相同
变暗值高度等于长度
尺寸sl为幻灯片,sh为形状,myMaster为整数,计数为整数,重新链接为整数,lt为自定义布局,sm为主控,ds为设计
Dim failureCounter为字符串,successCounter为整数
successCounter=0
“页数
对于ActivePresentation.Slides中的每个objSlide
对于objSlide.Shapes中的每个objShape
如果objShape.Type=msoLinkedPicture,则
myName=objShape.LinkFormat.SourceFullName

valueWidth=objShape.ScaleWidth'我想出了一个解决办法。首先,请注意图像的当前大小。然后,将其重新缩放到100%,并计算100%时图像与原始大小的比率。更新链接后,重新应用该比率。虽然不优雅,但它运行良好,速度快

Sub testScale()
Dim objShape As Object
Dim sHeightOld As Variant
Dim sWidthOld As Variant
Dim tScaleWidth As Variant
Dim tScaleHeight As Variant
Set objShape = Application.ActiveWindow.Selection
sHeightOld = objShape.ShapeRange.Height
sWidthOld = objShape.ShapeRange.Width
            objShape.ShapeRange.ScaleWidth 1#, msoTrue
            objShape.ShapeRange.ScaleHeight 1#, msoTrue
tScaleHeight = sHeightOld / objShape.ShapeRange.Height
tScaleWidth = sWidthOld / objShape.ShapeRange.Width
    objShape.ShapeRange.LinkFormat.update
    objShape.ShapeRange.ScaleWidth tScaleWidth, msoTrue
    objShape.ShapeRange.ScaleHeight tScaleHeight, msoTrue
End Sub
Sub testScale()
Dim objShape As Object
Dim sHeightOld As Variant
Dim sWidthOld As Variant
Dim tScaleWidth As Variant
Dim tScaleHeight As Variant
Set objShape = Application.ActiveWindow.Selection
sHeightOld = objShape.ShapeRange.Height
sWidthOld = objShape.ShapeRange.Width
            objShape.ShapeRange.ScaleWidth 1#, msoTrue
            objShape.ShapeRange.ScaleHeight 1#, msoTrue
tScaleHeight = sHeightOld / objShape.ShapeRange.Height
tScaleWidth = sWidthOld / objShape.ShapeRange.Width
    objShape.ShapeRange.LinkFormat.update
    objShape.ShapeRange.ScaleWidth tScaleWidth, msoTrue
    objShape.ShapeRange.ScaleHeight tScaleHeight, msoTrue
End Sub