あなたの例では fodia が定義されていないため、それがどうあるべきかを推測するのは困難です。しかし、それが問題の原因ではないと思います。これが機能する別のアプローチです。注意すべき点がいくつかあります。
PPT の ActiveX オブジェクトの処理は奇妙です。コントロール オブジェクトで使い慣れたプロパティにアクセスするには、Shape.OLEFormat.Object.property_name を使用する必要があります。
また、少なくとも一部のバージョンでは、ActiveX 図形が通常の図形の順序で表示されません。スライド上の図形をタブで移動して順番に選択できますが、ActiveX 図形は選択されません。形状に名前を付けることは 1 つの回避策です (形状が並べ替えられても変更されないため、少し信頼性が高くなります)。
Sub RedOrGreen()
Dim mainslide As Slide
Dim oSh As Shape
Set mainslide = ActivePresentation.Slides(1)
Set oSh = FindShapeNamed("green", mainslide)
If Not oSh Is Nothing Then
oSh.OLEFormat.Object.Picture = LoadPicture("c:\temp\red.jpg")
oSh.Name = "red"
Exit Sub
End If
Set oSh = FindShapeNamed("red", mainslide)
If Not oSh Is Nothing Then
oSh.OLEFormat.Object.Picture = LoadPicture("c:\temp\green.jpg")
oSh.Name = "green"
Exit Sub
End If
End Sub
Function FindShapeNamed(sName As String, oSl As Slide) As Shape
Dim oSh As Shape
For Each oSh In oSl.Shapes
If oSh.Name = sName Then
Set FindShapeNamed = oSh
Exit Function
End If
Next
End Function