引用:
エラーが出ているコードとエラーメッセージはこちらです↓
objPPT.SaveAs filename:="sample1000", FileFormat:=39
実行時エラー'438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
Dim objPPT As Object
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.SaveAs filename:="sample1000", FileFormat:=39
objPPT は、アプリケーション です。
SaveAsメソッド は、アプリケーションではなく、プレゼンテーション に対してのメソッドです。
なので、エラーとなります。
また、ここで 新たに PowerPointApplication を作成しようとしないでください。
複数のプロセスを起動できない PowerPoint の仕様なので
結果としては、同一のプロセスとなるのですが、
Excel等だと、前に使っていた、ppApp と全く関係なくなります。
ppPt.SaveAs 〜 で良いはずです。
テストを行ったコードがありましたので参考までにUPします。
動作保証や、解説は行いませんのであしからず。
Sub TEST()
'Sheet1の A列 に入れたフォルダパスの Jpeg画像を
'PPに貼り付け
'切り替え時間1秒のスライドショーとして 写真と同じフォルダにTEST.MP4として出力
Dim rng As Excel.Range
Dim PP As PowerPoint.Application
Dim prs As PowerPoint.Presentation
Dim sld As PowerPoint.Slide
Dim shp As PowerPoint.Shape
Dim FSO As Scripting.FileSystemObject
Dim Fld As Scripting.Folder
Dim Fil As Scripting.File
Set PP = CreateObject("PowerPoint.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each rng In Application.Intersect(Worksheets("Sheet1").UsedRange, Worksheets("Sheet1").Range("A:A"))
If FSO.FolderExists(rng.Value) = True Then
Set Fld = FSO.GetFolder(rng.Value)
Set prs = PP.Presentations.Add
For Each Fil In Fld.Files
'JPEGファイルのみ処理
Select Case LCase(FSO.GetExtensionName(Fil.Path))
Case "jpg", "jpeg"
Set sld = prs.Slides.Add(prs.Slides.Count + 1, ppLayoutBlank)
sld.Select
Set shp = sld.Shapes.AddPicture(Filename:=Fil.Path, 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 PP.ActiveWindow.Selection.ShapeRange
.Align msoAlignCenters, True
.Align msoAlignMiddles, True
End With
End Select
Next
prs.CreateVideo Filename:=Fld.Path & "\TEST.mp4", DefaultSlideDuration:=1, VertResolution:=720, Quality:=80
PP.Activate
On Error Resume Next
Do While PP.Presentations.Count > 0
Application.Wait (Now + TimeValue("00:00:10")) '10秒待機
prs.Saved = False
prs.Close
Loop
On Error GoTo 0
End If
Next
PP.Quit
Set shp = Nothing
Set sld = Nothing
Set prs = Nothing
Set PP = Nothing
Set Fil = Nothing
Set Fld = Nothing
Set FSO = Nothing
MsgBox "終了"
End Sub