piątek, 24 października 2014

Interakcja pomiędzy aplikacjami MS Office (4 z ...wielu)

Tym razem kilka słów na temat integracji aplikacji Excel z aplikacją PowerPoint. Zaprezentuję prostą operację polegającą na wkopiowaniu do PowerPointa obiektów pochodzących z arkusza Excel:
  • tabeli danych
  • wykresu
oraz ustawimy odpowiednie pozycje  i wymiary dla powyższych elementów slajdu.

Warto zwrócić szczególną uwagę w poniższym kodzie na edycję z wykorzystaniem zmiennych obiektowych. Zabieg ten jest przeprowadzony celowo w celu poprawienia czytelności kodu oraz wyraźnego wydzielenia, które operacje-obiekty dotyczą Excela, a które PowerPoint'a. Jedyną wada tego rodzaju zapisu to wydłużenie całej procedury o szereg linii związanych z deklaracją zmiennych i ich ustawieniem (linie Dim i Set).

Cała poniższa procedura działa dla prostego pliku Excela, gdzie w arkuszu Arkusz1 (nazwa kodowa arkusza) znajduje się jeden wykres oraz zakres danych wykresu znajduje się w komórkach A1:C4. Pozostałe ważne informacje i wskazówki znaleźć można w poniższym kodzie w postaci komentarzy.

01Sub Interakcja_z_PowerPoint()
02 
03    'stosujemy wczesne wiązanie
04    'uruchamiamy PP
05    Dim appPP As PowerPoint.Application
06    Set appPP = New PowerPoint.Application
07    
08    appPP.Visible = True
09    
10    'tworzymy nową prezentację, alternatywnie
11    'można otworzyć inną, istniejąca prezentację metodą .Open
12    
13    Dim presPP As PowerPoint.Presentation
14    Set presPP = appPP.Presentations.Add
15    
16    'dodajemy slajd do prezentacji, pusty
17    Dim sldPP As PowerPoint.Slide
18    Set sldPP = presPP.Slides.AddSlide(1, presPP.SlideMaster.CustomLayouts(7))
19    
20    'wkopiowujemy i pozycjonujemy kolejne elementy
21    'z arkusza excel: zakres komórek oraz wykres
22    
23    'wariant 1 dla wykresu- wklejanie domyślne obiektu
24        Dim chrEXL As ChartObject
25        Set chrEXL = Arkusz1.ChartObjects(1)
26        
27        chrEXL.Copy
28        
29        'wklejmy w PP
30        Dim chrPP As PowerPoint.Shape
31        Set chrPP = sldPP.Shapes.Paste(1)
32        
33        'ustawiamy pozycję
34        With chrPP
35            .Top = 10
36            .Left = 10
37        End With
38    
39    'wariant 2 dla wykresu
40    'wklejamy wykres ponownie ale tym razem jako obrazek
41        sldPP.Shapes.PasteSpecial ppPasteJPG
42        Set chrPP = sldPP.Shapes(sldPP.Shapes.Count)
43        With chrPP
44            .Top = 10
45            .Left = sldPP.Master.Width / 2
46        End With
47 
48    'wariant 3- dla zakresu- wklejanie domyślne
49        Dim rngEXL As Range
50        Set rngEXL = Arkusz1.Range("a1:c4")
51        rngEXL.Copy
52        
53        'sklejanie
54        Dim rngPP As PowerPoint.Shape
55        Set rngPP = sldPP.Shapes.Paste(1)
56        
57        With rngPP
58            .Top = sldPP.Master.Height / 2
59            .Left = 10
60        End With
61        
62    'wariant 4- dla zakresu- wklajanie jako obrazek
63        rngEXL.Copy
64        sldPP.Shapes.PasteSpecial ppPasteBitmap
65        Set rngPP = sldPP.Shapes(sldPP.Shapes.Count)
66        With rngPP
67            .Top = sldPP.Master.Height / 2
68            .Left = sldPP.Master.Width / 2
69        End With
70End Sub

Efektem działania powyższej procedury jest poniższy przykładowy slajd w prezentacji PowerPoint.


Brak komentarzy:

Prześlij komentarz