hi
The following worked for me under Office 2003.
use Win32::OLE qw/ in /;
my $file = 'C:\Documents and Settings\jim\My Documents\perlmonks_examp
+les\sample.ppt';
my $ppt = Win32::OLE->new('PowerPoint.Application', sub {$_[0]->Quit;}
+);
$ppt->{Visible} = 1;
my $presentation = $ppt->Presentations->Open($file);
die "Cannot open File '$file': $! " unless ( $presentation );
my $slide = $presentation->slides(1);
foreach my $shape ( in $slide->Shapes )
{
if ($shape->TextFrame->HasText)
{
print "Text:", $shape->TextFrame->{TextRange}->{Text} , "\n";
}
}
__DATA__
Text:This is the sample title
Text:This is the sample text.
... where I had a simple, one-slide PPT with a title "This is the sample title" and a text box with "THis is the Sample Text"
The issue may be that the "Shapes" method returns a collection of shapes, and your indexing of it (
$slide->shapes($shapeNumber)) may not work under Office 2003. That's only a guess
see also:
The MSDN PPT reference docs
- j