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:
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.