Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re:(3)Powerpoint OLE

by rchiav (Deacon)
on Sep 08, 2001 at 22:23 UTC ( #111193=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Powerpoint OLE
in thread Powerpoint OLE

OK.. don't take this too harshly, because it's all meant in the spirit of learning. The problem here is that you have quite a bit to learn about OLE with Perl in general. There's various things you're doing that just won't work.

First, you need to read the information about the OLE objects for powerpoint. I've never done any OLE Automation with Powerpoint, but this is what I've gathered..

Let's take a look at the following line..

$PpptApp = Presentations(Presentation1)->Open("$input"), ReadOnly ->Tr +ue;
The first thing here is that you're not specifying where "Presentations(..)->Open is. Presentations is a member of PptApp. You have to remember that what you're doing is creating an instance of powerpoint here. When you write a macro, you're already in powerpoint so you don't have to tell it that it's using itself. OLE gives you the ability to use functions that other apps export outside themselves. So so for our purposes, we'll change this to
$PpptApp = $PptApp->Presentations(Presentation1)->Open("$input"), Read +Only ->True;
This still won't work though.
Now look at this which describes the Presentation collection.
In that, you'll see..

Use Presentations(index), where index is the presentation's name or index number, to return a single Presentation object.

This is referring to the presentations that are already in the collection. Currently, you have no presentations, so you can't refrence one. What you want to do though is add one. Actually you want to open an existing one and add it to the collection. So that leads us to this, which describes the Open functionality. You'll see..

expression.Open(FileName, ReadOnly, Untitled, WithWindow)
expression Required. An expression that returns a Presentations collection.

OK.. so we also know that Presentations returns a Presentation Collection. So that would now make out line..

$PpptApp = $PptApp->Presentations->Open("$input"), ReadOnly ->True;
Now.. this will actually open the file.. but it's still not correct. If you look back at the information on Open, you'll see that it takes 4 arguments. The last 3 are optional. Respectivly they are "Readonly", "Untitled" and "WithWindow". In Perl, there's no True and False keywords.. but 0 (false) and 1(true) will suffice. So we now change the line to..
my $PpptApp = $PptApp->Presentations->Open("$input", 1);
and it does what we want it to do.

That should also help you figure out how you have to format other things to get them to work correctly.

Hope this helps..

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://111193]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (2)
As of 2021-09-19 09:12 GMT
Find Nodes?
    Voting Booth?

    No recent polls found