我在PowerPoint VBA中創建一個宏以從當前幻燈片導出圖像。導出圖像將是寬度超過250個單位的第一個圖像。圖像存儲爲Shape
,所以我做了一個For Each ... Next
循環來做到這一點。代碼工作正常。如何使用vba在PowerPoint中調整導出圖像大小?
Function FindAndSavePicture() As String
'
' Find the target picture at the active windows
'
'
Dim myTempPath As String
myTempPath = "C:\Users\" & Environ$("USERNAME") _
& "\AppData\Local\Microsoft\Windows\pic_VBA.jpg"
With ActiveWindow.Selection.SlideRange
For Each s In .Shapes
Debug.Print s.Name
If s.Type = msoPicture And s.Width > 250 Then
' Show scale
Debug.Print "s.Width=" & s.Width ' s.Width=323,3931
Debug.Print "s.Height=" & s.Height ' s.Height=405
' Save pic in file system
s.Export myTempPath, ppShapeFormatJPG
' assign the return value for this function
FindAndSavePicture = myTempPath
Exit For
End If
Next
End With
End Function
問題
導出的圖像pic_VBA.jpg
遠小於它在PowerPoint中所示。 我想要圖片的原始尺寸。由VBA pic_VBA.jpg
導出的圖像尺寸爲331 x 413。如果我使用另存爲圖片...手動導出圖像,導出圖像pic_SaveAs.jpg
的尺寸爲692 x 862,這是原始尺寸。
pic_VBA.jpg
尺寸:331 X 413pic_SaveAs.jpg
尺寸:692 X 862(原始大小)
我測試
s.Export myTempPath, ppShapeFormatJPG, s.Width, s.Height, ppScaleXY
它不工作。出口圖像的尺寸爲150×413
問題
那麼,如何在PowerPoint中使用VBA調整出口圖像大小?
相關infomations
請問我可以在我的代碼中使用你的函數嗎?我以前從不使用'Type'。我應該像'Dim myType As ypPictureScale'一樣聲明使用某種東西嗎? –
類型聲明必須放入代碼模塊的聲明部分(首先是Sub和Function過程)。 –
嗨@JamieG,我試過了。你可能忘記在第27行和第28行添加前綴「yp」?在第27行中,它應該是'PictureScale。代替ypScaleH'。除了這個問題,你的代碼完美地工作。然而,它並沒有解決我的問題,因爲它導出的圖像大小與我使用默認設置's.Export myTempPath,ppShapeFormatJPG'時的大小相同。我無法接受它,但我贊成你的答案。我現在不再處理這個問題(我的同事不再需要它了),但感謝您的幫助! –