Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 9
  • 632

Pracuję obecnie nad mapą, na którą nałożone są wklejone, wykresy Excela. Każde województwo zawiera dwa proste wykresy słupkowe z etykietami wartości.

Posługiwanie się animacjami powoduje, że powiększane wykresy są bardzo złej jakości. Dlatego szukałem w sieci rozwiązania, które pozwoliłoby powiększyć do 2 razy klikniętą grafikę wektorową. To powinno się udać bez rozmazania, które powinno występować jedynie w przypadku grafiki rastrowej. Znalazłem i usiłowałem m.in. przerobić następujące makro (stan obecny po przeróbkach, głównie dotyczących pozycjonowania w tym samym miejscu, w oryginale obiekt jest wyśrodkowany):

 

Dim x, y As Long


Sub GrowShape(myShape As Shape)

'Increase the size of clicked object.
 x = myShape.Top
 y = myShape.Height


myShape.Height = myShape.Height * 1.5

myShape.Width = myShape.Width * 1.5

myShape.ActionSettings(ppMouseClick).Run = "ShrinkShape"

'Center object.

    With ActivePresentation.PageSetup
    
   
    myShape.Top = myShape.Top - (y * 0.5)
    
    End With



'With ActivePresentation.PageSetup
'
'myShape.Left = (.SlideWidth \ 2) - (myShape.Width \ 2)
'
'myShape.Top = (.SlideHeight \ 2) - (myShape.Height \ 2)
'
'End With

End Sub

Sub ShrinkShape(myShape As Shape)

'Decrease the size of clicked object.

myShape.Height = myShape.Height / 1.5

myShape.Width = myShape.Width / 1.5

myShape.ActionSettings(ppMouseClick).Run = "GrowShape"

    With ActivePresentation.PageSetup
    
    myShape.Top = x
    
    End With
'Center object.

'With ActivePresentation.PageSetup
'
'myShape.Left = (.SlideWidth \ 2) - (myShape.Width \ 2)
'
'myShape.Top = (.SlideHeight \ 2) - (myShape.Height \ 2)
'
'End With

End Sub

 

Oryginalne makro tutaj:

http://www.techrepublic.com/blog/microsoft-office/use-vba-to-make-powerpoint-autoshape-bigger-and-smaller/

Pytanie 1: Jak wyliczyć pozycję tak, by powiększony obrazek zawsze swoim lewym dolnym rogiem znajdował się w poprzedniej pozycji? Niby proste, ale nie bardzo rozumiem, jak PowerPoint pozycjonuje obiekty (jestem początkujący w VBA; na oko wyszło mi, że odjęcie połowy wysokości będzie OK). Ewentualnie, jak wyśrodkować powiększony kształt, ale nie w stosunku do slajdu, ale w stosunku do poprzedniej pozycji powiększanego obiektu? Pewnie to jest proste, ale nie dałem rady.

Pytanie 2: Czy można to makro przypisać hurtem do wielu obiektów tak, aby każdy z osobna powiększał się i pomniejszał po jego kliknięciu? Gdy zaznaczę kilka, opcja  Insert Action jest nieaktywna.

Pytanie 3: Czy można to makro przypisać tak, aby traktowało dwa obiekty (dwa wykresy dot. jednego województwa), jako jeden obiekt? Gdy zaznaczę dwa obiekty we wstążce, Insert/Links/Action, jest nieaktywne. Gdy dwa obiekty pogrupuję Drawing Tools/Group, opcja Insert Action również jest nieaktywna.

Pytanie 4: Gdy makro powiększa obiekt, który jest wykresem wklejonym z Excela, etykiety nad wykresem (labels) z wartościami pozostają niepowiększone. Czy da się coś zrobić, aby cały obiekt był powiększany, skalowany?

Troszeczkę się dziwię, dlaczego w tak zaawansowanym pakiecie, w tak późnej jego wersji, nie ma standardowo wbudowanych takich udogodnień, jak możliwość animowania -> powiększania wykresów, obiektów wektorowych w PowerPoincie. A może są, tylko ja coś przeoczyłem? Przyznaję, że rzadko używam PowerPointa.

Z góry dziękuję za wszelkie uwagi i sugestie.

 

Jacek_Kotowski
  • Zapytał
  • @ Jacek_Kotowski | 03.09.2014
    • lider
    • laureat
    • ekspert
    • 60
    • 54
    • 94

Odpowiedź (1)

  • 8

Witam.

Ja zaproponuję trochę inne rozwiązanie, bardziej uniwersalne i bez zastosowania VBA.

W takich przypadkach stosuję zwykle akcję na obiektach umieszczonych nad wykresem lub diagramem czy tabelą, przypisane do 100% przezroczystych kształtów i przenoszącą do innego slajdu z umieszczonym powiększaniem lub szczegółowymi informacjami.

Metoda ta pozwala nie tylko na powiększanie, ale również przechodzenie do innego typu zawartości. W załączniku przykład.

Pozdrawiam.
Tomasz Grabowski.

Załączniki

  • pptx

    Przykład powiększenia.pptx ( 289K )
  • Odpowiedział
  • @ | 08.09.2014
  • TRENER MODERATOR ALTKOM AKADEMII