use strict ; $DOS::Filename = "d:\\Temp\\Perl2PowerPoint.ppt" ; use Win32::OLE::Const 'Microsoft PowerPoint'; use Win32::Process ; # Launch a Windows program $Win32::OLE::Warn = 2 ; # return errors... if (-f $DOS::Filename) { unlink $DOS::Filename ; } eval {$MS::PowerPoint = Win32::OLE->GetActiveObject('PowerPoint.Application')} ; die "PowerPoint not installed" if $@ ; unless (defined $MS::PowerPoint) { $MS::PowerPoint = Win32::OLE->new('PowerPoint.Application', sub {$_[0]->Quit;}) or die "Oops, cannot start PowerPoint" ; } $MS::PowerPoint->{'Visible'} = 1 ; # 0 = do not show it $ppt::presentation = $MS::PowerPoint->Presentations->Add() ; $ppt::Slide = $ppt::presentation->Slides->Add({Index=>1 , Layout=>ppLayoutText}); $ppt::Slide->{Name} = "Slide1"; $ppt::presentation->ApplyTemplate('D:\Program Files\Microsoft Office\Templates\Presentation Designs\high voltage.pot') ; $ppt::slide = $ppt::presentation->Slides->Add({Index=>2 , Layout=>ppLayoutText}); $ppt::slide->{Name} = "Ken"; $slide::textbox=$ppt::slide->Shapes->AddTextbox({Orientation=>1, Left=>5, Top=>5, Width=>250, Height=>250,}); $slide::textbox->TextFrame->TextRange->{Text} ="Big Ole Test"; $slide::title=$ppt::slide->Shapes->{Title}; $slide::title->TextFrame->TextRange->{Text} ="Title Test"; $ppt::slide = $ppt::slide->Duplicate(); $ppt::slide->{Name} = "Slide2"; $slide::title=$ppt::slide->Shapes->{Title}; $slide::title->TextFrame->TextRange->{Text} ="Slide Test"; $ppt::presentation->SaveAs( \$DOS::Filename ) ; $ppt::presentation->Close; undef $ppt::presentation ; undef $MS::PowerPoint ;