Lets do this step by step:
If you create an Excel Application automation server (aka Excel.Application) many properties and methods intellisense finds are public, so you can access and use them.
Code:
oExcel = CREATEOBJECT("Excel.Application")
? oExcel.Workbooks.Count
You get a count of 0. That's the simplest reason you cannot access anything on the level of a Workbook, even less so of a Sheet. No workbook, no sheet, no pictures.
Lets see:
A Pictures collection doesn't show. It has to do with how VFP drills down the typelib information, perhaps. Anyway, it's always good to try to drill deeper by loading an object reference into a variable:
Code:
oExcel.Workbooks.Add()
oSheet = oExcel.Workbooks(1).Sheet(1)
We get nearer. Now Pictures show up, but take a close look, its icon has a lock.
That means it's not so private you don't get to see it at all, but it's protected against access from "outside". Well, lets be the Pictures, ie again load the Pictures object into a VFP variable:
Code:
oPictures = oSheet.Pictures
Now the Insert method becomes visible and is public. I think it's a matter from which level you ask for access. That's not normal in other languages, especially not when you use the Office object model more directly. In VBA you can do:
Code:
Application.Workbooks.Add().Sheets(1).Pictures.Insert ("C:\Pictures\mylogs.png")
Which gives you another solution path, if all else fails, use VBA within the Office application you automate.