Palo235
05.10.09,11:31
cawte.

chcel by som poradit, ci niekto nevie co je s tymto makrom.

Toto funguje normalne

Dim oPPTApp As Object
Dim rngNewRange As Excel.Range
Dim oExcel As Object

Range("A1").Select
a = ActiveCell.Value

Set oExcel = Excel.Application
Set oPPTApp = CreateObject("PowerPoint.Application")

oPPTApp.Visible = msoTrue
oPPTApp.presentations.Open "d:\NEW.ppt"

Set rngNewRange = ActiveSheet.Range("D4:H5")
rngNewRange.Select
rngNewRange.Copy

oPPTApp.ActivePresentation.Slides(1).Shapes("Object 8").Select
oPPTApp.ActivePresentation.Slides(1).Shapes("Object 8").OLEFormat.DoVerb

Sheets("Sheet1").Select
Range("B1").Select
ActiveSheet.Paste
Sheets("Graf1").Select

oPPTApp.ActiveWindow.Selection.Unselect
oExcel.Visible = True


Ale ked chcem aktualizovat iny slide, napr.

oPPTApp.ActivePresentation.Slides(4).Shapes("Object 8").Select
oPPTApp.ActivePresentation.Slides(4).Shapes("Object 8").OLEFormat.DoVerb

Tak mi to vypise takyto debug:

Shape.Select: Invalid request. To select a shape, its view must be active.

Pritom mi ostane vysvieteny slide 1.

Neviete niekto co s tym? Dik
Palo235
05.10.09,09:33
este nieco. grafy su excelovske v ppt.
Chobot
05.10.09,09:41
este nieco. grafy su excelovske v ppt.

Neviem, čo presne potrebuješ dosiahnuť, ale najjednoduchšie je kopírovať graf z Excelu do ppt ako obrázok. Jedinou nevýhodou je, že vtedy nemôžeš upravovať dáta.
Palo235
06.10.09,04:02
Prave, ze potrebujem robit s tymi grafmi. Ide mi o to, ze chcem aby mi z predlohy kopirovalo a aktualizovavalo grafy v ppt. akurat, ze xls si dobre nerozumie s ppt.
2009
06.10.09,05:02
Prečo by to nešlo. Sorry nemám čas sa tým pohrať. P.s samozrejme nevložiť ako obrázok ale Excel. Potom len 2x klikneš a robíš zmeny aké chceš. Funguje to ako vo Worde
2009
06.10.09,18:59
este nieco. grafy su excelovske v ppt.

Pomohlo Ti to?
Palo235
07.10.09,04:06
Asi sme sa trochu nepochopili. Ja chcem zautomatizovat nahravanie dat z excel tabuliek do grafov v ppt. Ten zapis co som hodil, je na tu automatizaciu. Prvy slide ide spravit v pohode, ale ked chcem spravit iny ako prvy slide, tak mi vypisuje ten debug. A aj ked si nakopirujem slide na prvu poziciu, tak sa mi objavi debug a ostane vysvieteny povodny prvy slide. Ze ci to nie je nejaka chyba ppt alebo co?
2009
07.10.09,05:53
Asi sme sa trochu nepochopili. Ja chcem zautomatizovat nahravanie dat z excel tabuliek do grafov v ppt. Ten zapis co som hodil, je na tu automatizaciu. Prvy slide ide spravit v pohode, ale ked chcem spravit iny ako prvy slide, tak mi vypisuje ten debug. A aj ked si nakopirujem slide na prvu poziciu, tak sa mi objavi debug a ostane vysvieteny povodny prvy slide. Ze ci to nie je nejaka chyba ppt alebo co?


Aha... ja som Tu jednoducho vložila Excel do PowerPoint. Tabuľku aj graf. Dvojitým kliknutím môžeš meniť hodnoty v tabuľkách a mení sa logicky aj graf. Nepodceňuj výhodu, že si to môžeš dať na kľuč a predviesť na akomkoľvek PC.
Palo235
09.10.09,04:11
Akurat, ze mne ide o masivnu automatizaciu az do 300 grafov v ppt a nie update jedneho grafu rucne.
marjankaj
09.10.09,07:25
Akurat, ze mne ide o masivnu automatizaciu az do 300 grafov v ppt a nie update jedneho grafu rucne.

Skús priložiť súbory.
Palo235
12.10.09,04:54
Prikladam tie subory.
Palo235
16.10.09,10:15
Tak nakoniec som zistil kde bola chyba a to prechodu na slide

keby niekoho to zaujalo tak:

Sub Makro1()

Dim oPPTApp As Object
Dim rngNewRange As Excel.Range
Dim oExcel As Object

Set oExcel = Excel.Application
Set oPPTApp = CreateObject("PowerPoint.Application")
Set rngNewRange = ActiveSheet.Range("D4:H5")

oPPTApp.Visible = msoTrue
oPPTApp.presentations.Open "d:\powerpoint.ppt"

oPPTApp.ActivePresentation.Slides(4).Copy
oPPTApp.ActivePresentation.Slides.Paste 1

rngNewRange.Select
rngNewRange.Copy

oPPTApp.ActiveWindow.View.GotoSlide Index:=1
oPPTApp.ActiveWindow.Selection.SlideRange.Shapes("Object 8").Select
oPPTApp.ActiveWindow.Selection.SlideRange.Shapes("Object 8").OLEFormat.DoVerb

Sheets("Sheet1").Select
Range("B1").Select
ActiveSheet.Paste
Sheets("Graf1").Select

oPPTApp.ActiveWindow.Selection.Unselect
oExcel.Visible = True

End Sub