Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming,microsoft.public.office.developer.vba,microsoft.public.powerpoint
|
|||
|
|||
![]()
Hi,
I ask a question that must have been asked 100 times about Office 2007: - is it 100% true that it is impossible to reach pasted Excel charts in PPT programatically. I.e. what whas done before by addressing the Activechart of the OLEObject. This is a nightmare for all code that I have developed that cleanses charts pasted in PPT from Excel. I can't understand whay this door has been closed? Is this forever? Best regards, Bob |
#2
![]()
Posted to microsoft.public.excel.programming,microsoft.public.office.developer.vba,microsoft.public.powerpoint
|
|||
|
|||
![]()
In the post in the other group, I said that Office-wide (Excel) charts built
in PowerPoint were not accessible to VBA, but that charts made in Excel and then inserted into PowerPoint were accessible through the familiar OLE approach. This was only partially true. If an Excel 2007 chart is copied in Excel and Pasted into PowerPoint, it behaves as one of the new Office-wide Excel charts. It is inaccessible to VBA. You can access the shape itself, but there is no OLE Object in it which you can hook into. They've even added a property, HasChart, to tell you that the shape contains a chart, but there is no Chart object that you can hook into. I don't know whether to blame it on a design error or on a lack of time to implement, but it is a major shortcoming in Office 2007. There is hope, however. You can insert the chart from a file. Make sure the workbook is open but saved such that the chart is the active chart sheet, then use code similar to this to insert it into PowerPoint (this is code running in Excel VBA): ' insert from excel file Set ppShape = ppSlide.Shapes.AddOLEObject _ (Left:=90#, Top:=240#, Width:=360#, Height:=240#, _ Filename:=ActiveWorkbook.FullName, Link:=msoFalse) With ppShape .Name = "xlInsertedSheet" .Width = ActiveChart.ChartArea.Width .Height = ActiveChart.ChartArea.Height .Left = (ppPres.PageSetup.SlideWidth - .Width) / 2 .Top = (ppPres.PageSetup.SlideHeight - .Height) / 2 End With Now you can manipulate the chart in the PowerPoint shape named xlInsertedSheet, using OLE to hook into the chart. - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions Peltier Technical Services, Inc. - http://PeltierTech.com _______ "Bengt" <bobone a pointer.se wrote in message ... Hi, I ask a question that must have been asked 100 times about Office 2007: - is it 100% true that it is impossible to reach pasted Excel charts in PPT programatically. I.e. what whas done before by addressing the Activechart of the OLEObject. This is a nightmare for all code that I have developed that cleanses charts pasted in PPT from Excel. I can't understand whay this door has been closed? Is this forever? Best regards, Bob |
#3
![]()
Posted to microsoft.public.excel.programming,microsoft.public.office.developer.vba,microsoft.public.powerpoint
|
|||
|
|||
![]()
Hi Jon, Brian, Steve and all,
Jon's and Brian's approach of inserting OLE objects from files through code is some relief. I haven't yet tested, but does this implicitely require a link to work? Links would be cumbersome to use in this case. Also as Steve pointed out, already created presentations with pasted charts are problematic. If one could move them to a file and then insert them programatically, life would be better.... In the middle of this mail I started fooling around with opening charts and copying them between files. Quite messy, but there seems to be some interesting oppportunities coming up. It's getting late over here, so I'll try tomorrow. Bob "Jon Peltier" wrote in message ... In the post in the other group, I said that Office-wide (Excel) charts built in PowerPoint were not accessible to VBA, but that charts made in Excel and then inserted into PowerPoint were accessible through the familiar OLE approach. This was only partially true. If an Excel 2007 chart is copied in Excel and Pasted into PowerPoint, it behaves as one of the new Office-wide Excel charts. It is inaccessible to VBA. You can access the shape itself, but there is no OLE Object in it which you can hook into. They've even added a property, HasChart, to tell you that the shape contains a chart, but there is no Chart object that you can hook into. I don't know whether to blame it on a design error or on a lack of time to implement, but it is a major shortcoming in Office 2007. There is hope, however. You can insert the chart from a file. Make sure the workbook is open but saved such that the chart is the active chart sheet, then use code similar to this to insert it into PowerPoint (this is code running in Excel VBA): ' insert from excel file Set ppShape = ppSlide.Shapes.AddOLEObject _ (Left:=90#, Top:=240#, Width:=360#, Height:=240#, _ Filename:=ActiveWorkbook.FullName, Link:=msoFalse) With ppShape .Name = "xlInsertedSheet" .Width = ActiveChart.ChartArea.Width .Height = ActiveChart.ChartArea.Height .Left = (ppPres.PageSetup.SlideWidth - .Width) / 2 .Top = (ppPres.PageSetup.SlideHeight - .Height) / 2 End With Now you can manipulate the chart in the PowerPoint shape named xlInsertedSheet, using OLE to hook into the chart. - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions Peltier Technical Services, Inc. - http://PeltierTech.com _______ "Bengt" <bobone a pointer.se wrote in message ... Hi, I ask a question that must have been asked 100 times about Office 2007: - is it 100% true that it is impossible to reach pasted Excel charts in PPT programatically. I.e. what whas done before by addressing the Activechart of the OLEObject. This is a nightmare for all code that I have developed that cleanses charts pasted in PPT from Excel. I can't understand whay this door has been closed? Is this forever? Best regards, Bob |
#4
![]()
Posted to microsoft.public.excel.programming,microsoft.public.office.developer.vba,microsoft.public.powerpoint
|
|||
|
|||
![]()
No links are created when the workbook is inserted as an object. Another
option is to insert it as a link, but it is not necessary. I haven't tried this through automation, and I even question whether it's possible, but manually you can edit the data to view the pasted chart in Excel, do a save-as in Excel, clean up the saved workbook, then insert it as an object into the slide. - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions Peltier Technical Services, Inc. - http://PeltierTech.com _______ "Bob" <bobone a pointer.se wrote in message ... Hi Jon, Brian, Steve and all, Jon's and Brian's approach of inserting OLE objects from files through code is some relief. I haven't yet tested, but does this implicitely require a link to work? Links would be cumbersome to use in this case. Also as Steve pointed out, already created presentations with pasted charts are problematic. If one could move them to a file and then insert them programatically, life would be better.... In the middle of this mail I started fooling around with opening charts and copying them between files. Quite messy, but there seems to be some interesting oppportunities coming up. It's getting late over here, so I'll try tomorrow. Bob "Jon Peltier" wrote in message ... In the post in the other group, I said that Office-wide (Excel) charts built in PowerPoint were not accessible to VBA, but that charts made in Excel and then inserted into PowerPoint were accessible through the familiar OLE approach. This was only partially true. If an Excel 2007 chart is copied in Excel and Pasted into PowerPoint, it behaves as one of the new Office-wide Excel charts. It is inaccessible to VBA. You can access the shape itself, but there is no OLE Object in it which you can hook into. They've even added a property, HasChart, to tell you that the shape contains a chart, but there is no Chart object that you can hook into. I don't know whether to blame it on a design error or on a lack of time to implement, but it is a major shortcoming in Office 2007. There is hope, however. You can insert the chart from a file. Make sure the workbook is open but saved such that the chart is the active chart sheet, then use code similar to this to insert it into PowerPoint (this is code running in Excel VBA): ' insert from excel file Set ppShape = ppSlide.Shapes.AddOLEObject _ (Left:=90#, Top:=240#, Width:=360#, Height:=240#, _ Filename:=ActiveWorkbook.FullName, Link:=msoFalse) With ppShape .Name = "xlInsertedSheet" .Width = ActiveChart.ChartArea.Width .Height = ActiveChart.ChartArea.Height .Left = (ppPres.PageSetup.SlideWidth - .Width) / 2 .Top = (ppPres.PageSetup.SlideHeight - .Height) / 2 End With Now you can manipulate the chart in the PowerPoint shape named xlInsertedSheet, using OLE to hook into the chart. - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions Peltier Technical Services, Inc. - http://PeltierTech.com _______ "Bengt" <bobone a pointer.se wrote in message ... Hi, I ask a question that must have been asked 100 times about Office 2007: - is it 100% true that it is impossible to reach pasted Excel charts in PPT programatically. I.e. what whas done before by addressing the Activechart of the OLEObject. This is a nightmare for all code that I have developed that cleanses charts pasted in PPT from Excel. I can't understand whay this door has been closed? Is this forever? Best regards, Bob |
#5
![]()
Posted to microsoft.public.excel.programming,microsoft.public.office.developer.vba,microsoft.public.powerpoint
|
|||
|
|||
![]()
I haven't tried this through automation, and I even question whether it's
possible, but manually you can edit the data to view the pasted chart in Excel, do a save-as in Excel, clean up the saved workbook, then insert it as an object into the slide. Okay, so I tried by automation. Sub Noodling() Dim shp As Shape Dim iShpType As MsoShapeType Set shp = ActiveWindow.Selection.ShapeRange(1) iShpType = shp.Type If iShpType = msoChart Then MsgBox "The shape is a chart" If shp.HasChart Then MsgBox "The shape has a chart" ' there is no indication what can be done with shp ' object browser, autosense, online help all have nothing End Sub I can find out that the shape is a chart or has a chart, but I can divine no way to access the contained chart via VBA. It seems like a dead end. - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions Peltier Technical Services, Inc. - http://PeltierTech.com _______ |
#6
![]()
Posted to microsoft.public.excel.programming,microsoft.public.office.developer.vba,microsoft.public.powerpoint
|
|||
|
|||
![]()
The macro recorder has been deprecated from PowerPoint 2007, so I switched
to Word, pasted in a chart, turned on the recorder, edited the chart's source data (which is linked to the file the chart was pasted from, despite having not selected Linked while using paste special), and read the recorded code. I reproduce it here in its entirety: Sub Macro1() ' ' Macro1 Macro ' ' End Sub Why am I not surprised? - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions Peltier Technical Services, Inc. - http://PeltierTech.com _______ "Jon Peltier" wrote in message ... I haven't tried this through automation, and I even question whether it's possible, but manually you can edit the data to view the pasted chart in Excel, do a save-as in Excel, clean up the saved workbook, then insert it as an object into the slide. Okay, so I tried by automation. Sub Noodling() Dim shp As Shape Dim iShpType As MsoShapeType Set shp = ActiveWindow.Selection.ShapeRange(1) iShpType = shp.Type If iShpType = msoChart Then MsgBox "The shape is a chart" If shp.HasChart Then MsgBox "The shape has a chart" ' there is no indication what can be done with shp ' object browser, autosense, online help all have nothing End Sub I can find out that the shape is a chart or has a chart, but I can divine no way to access the contained chart via VBA. It seems like a dead end. - Jon ------- Jon Peltier, Microsoft Excel MVP Tutorials and Custom Solutions Peltier Technical Services, Inc. - http://PeltierTech.com _______ |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
how do I format AutoCAD drawings that are pasted into Excel 2007? | Excel Discussion (Misc queries) | |||
Excel 2007 line-chart pasted as an enhanced metafile - editing | Charts and Charting in Excel | |||
changing property of a picture that is already pasted on excel | New Users to Excel | |||
Problem with excel charts pasted into Word | Excel Discussion (Misc queries) | |||
Changing a formula that is copied and pasted using vba with excel 2000 | Excel Programming |