プレゼンの準備で、パワーポイントに写真を貼り付ける必要がある。1スライドに1枚貼り付けたいけど、スライドの真ん中に合わせたり拡大縮小とか大変で、しかも数が多いから自動でやってほしい。パワーポイントにもVBAが使える!
以下のサイトを参考にさせていただきました!先人のお知恵に感謝。
https://plaza.rakuten.co.jp/takupin/diary/201801260001/
PNGファイルが大量にあると仮定する。そして、それらの名前を貼り付けしたい順番に数字の名前とする。1.png、2.pngという感じ。もしJPGなら、コードをJPGに変更する。
Option Explicit
Public Sub InsertImages()
Dim prs As PowerPoint.Presentation
Dim sld As PowerPoint.Slide
Dim shp As PowerPoint.Shape
Dim tmp As PowerPoint.PpViewType
Dim fol As Object, f As Object
Dim fol_path As String
Dim page
page = InputBox("ページを入力してください")
Set prs = ActivePresentation
If SlideShowWindows.Count > 0 Then prs.SlideShowWindow.View.Exit
With ActiveWindow
tmp = .ViewType
.ViewType = ppViewSlide
End With
Set fol = CreateObject("Shell.Application").BrowseForFolder(0, "画像フォルダ選択", &H10, 0)
If fol Is Nothing Then GoTo Fin
fol_path = fol.Self.Path
With CreateObject("Scripting.FileSystemObject")
If Not .FolderExists(fol_path) Then GoTo Fin
Dim i
For i = 1 To page
Select Case LCase(.GetExtensionName(fol_path + "\" + CStr(i) + ".png"))
Case "png"
Set sld = prs.Slides.Add(prs.Slides.Count + 1, ppLayoutBlank)
sld.Select
Set shp = sld.Shapes.AddPicture(FileName:=fol_path + "\" + CStr(i) + ".png", _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=0, _
Top:=0)
With shp
.LockAspectRatio = True
If .Width > .Height Then
.Width = prs.PageSetup.SlideWidth
Else
.Height = prs.PageSetup.SlideHeight
End If
.Select
End With
With ActiveWindow.Selection.ShapeRange
.Align msoAlignCenters, True
.Align msoAlignMiddles, True
End With
End Select
Next
End With
Fin:
ActiveWindow.ViewType = tmp
End Sub