Identify excel embedded charts in powerpoint

N

Nicolo

Hello,

I would like to identify vith a VBA code, if the chart that i am editing is
is embedded in a powerpoint presentation or if is just an excel file opened
by excel.

My point is to fix the color chart bugs between 2003 and 2007 powerpoint
version.
I would like to reset the color index, if Ia m editing an Excel chart from
powerpoint (wich bugs)

I have tryed the workbook.container property, but it does not work when you
edit a chart in Excel (I don't understand the purpose of this excel function
that dies not work in excel ,,,)

Any idea ??

Thanks
 
P

Peter T

If you only need to know if the Workbook is embedded is to check its
IsInPlace property, False if opened in Excel otherwise True. If you need to
know the name of the parent app check the wb's Container name (under an
error handler 'cos it'll error in Excel).

With both methods, if you need to know in the wb's open event postpone and
check in an OnTime macro called from the open event.

b = wb.IsInPlace
On error resume next
s = wb.Container.Name
On error got to 0
If len(s) then etc

Regards,
Peter T
 
N

Nicolo

Thanks Peter.

the is in place works fine.
but the container errors as in Excel but I'll do it with is in place only.

Other question.
Do you know how I could launch a Sub every time a new workbook is open.
I have included this scipt in the auto open section of an add-in.
I can identify the cases when i need to launch my sub that changes the color
index / color theme (necessary only when I display an excel graph embedded in
Powerpoint)

If I include directly my sub in the auto open (which includes
activeworkbook.colors...), it does not work, because when the add in is
loaded, there is not yet any active book....

IS there a way to put in a single addin a sub that will be lauched every
time a new workbook is opened or created ??
 
P

Peter T

As I mentioned previously it's best to postpone open event code until
everything is in-place! You can do this with an onetime macro like this -

Sub auto_open()

Application.OnTime Now + TimeSerial(0, 0, 2), "MyAfterOpenMacro"

End Sub

Sub MyAfterOpenMacro()
Dim wb As Workbook

MsgBox "MyAfterOpenMacro"
Set wb = ThisWorkbook

If wb.IsInplace Then
' do stuff
End If

End Sub

You might not need the two second delay in the above example as the Ontime
macro will fire when all else is done, in a manor of speaking.

Regards,
Peter T
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top