Centrum skryptów - Microsoft office

Jak umieścić nowy szablon w prezentacji programu Power Point?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak umieścić nowy szablon w prezentacji programu Power Point?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak zwykle po prośbie… Chodzi o to, że moja firma utworzyła właśnie nowy szablon programu Power Point i zadecydowała, że odtąd wszystkie prezentacje mają się do niego stosować. Jak zastosować nowy szablon we wszystkich prezentacjach w moim folderze C:\Presentations?

-- OI

Cześć Skrypciarze! Pytanie

Cześć, OI! Po jakiej prośbie znowu? Płacą mi przecież za to, a pytanie, nie powiem, dość ciekawe, więc jak tu nie pomóc??? Pytanie w sumie o wiele ciekawsze niż anegdota, którą chciałem tu napisać. No dobra, napisałem, ale nasza Pani Redaktor kazała mi ją usunąć, bo stwierdziła: „Nie dość, że 10 akapitów, to jeszcze koszmarnie nudna”. Musiałem więc usunąć wszystko. Mam nadzieję, że tłumaczy to brak anegdoty… Postaram się zrekompensować to dowcipem i ciętą ripostą w opisie skryptu.

A oto plan odpowiedzi na Twoje pytanie, O.I. Zaczniemy od pokazania skryptu, dzięki któremu można zastosować dany szablon w pojedynczej prezentacji programu Power Point. Następnie wytłumaczymy jak on działa, po czym zaprezentujemy zmodyfikowaną wersję skryptu, dzięki której będzie można zastosować dany szablon we wszystkich prezentacjach w folderze. Dobra, w sumie za formalnie to wszystko ująłem, no ale skoro nie było anegdoty, to może chociaż zabawię czytelnika wyszukanym słownictwem.

Set objPPT = CreateObject("PowerPoint.Application")

objPPT.Visible = True



Set objPresentation = objPPT.Presentations.Open("C:\Presentations\Test.ppt")



objPresentation.ApplyTemplate _

    ("C:\Program Files\Microsoft Office\Templates\Presentation Designs\Ocean.pot")



objPresentation.Save



objPPT.Quit

Zaczynamy od utworzenia wystąpienia obiektu PowerPoint.Application i ustawienia jego właściwości Visible na True, dzięki czemu będzie ono widoczne na ekranie. Może i uważacie, że niemądre jest ustawianie właściwości Visible na True, bo, jeżeli wszystko pójdzie zgodnie z planem, to wystąpienie programu Power Point będzie widoczne na ekranie tylko przez ułamek sekundy (pojawi się, szablon zostanie zmieniony, po czym zapiszemy plik i zamkniemy aplikację.) Istnieje jednak powód usprawiedliwiający nasze niemądre zachowanie, a powód ten wygląda następująco:

C:\Scripts\test.vbs(4, 1) Microsoft Office PowerPoint 2003: Presentations.Open : 

Invalid request.  The PowerPoint Frame window does not exist.

Jeżeli wystąpienie programu nie będzie widoczne na akranie, to po prostu może pojawić się taki oto komunikat o błędzie. Na szczęście dla nas jednak, ustawiliśmy właściwość Visible na True i nic takiego zdarzyć się nie może. Możemy więc spokojnie wywołać metodę Open i otworzyć plik C:\Presentations\Test.ppt:

Set objPresentation = objPPT.Presentations.Open("C:\Presentations\Test.ppt")

Jestem pewien, że zżera Was ciekawość, jak wygląda pierwszy slajd naszej prezentacji. Otóż wygląda on w sposób następujący:

Fascynujące i merytoryczne, nieprawdaż? Oczywiście prezentacja, o której mowa, nie ma tak wyglądać i chcemy ją zmienić za pomocą nowego szablonu. Do tego właśnie potrzebny jest nam poniższy wiersz kodu:

objPresentation.ApplyTemplate _

    ("C:\Program Files\Microsoft Office\Templates\Presentation Designs\Ocean.pot")

Jak widać, musimy tylko przywołać tutaj metodę ApplyTemplate. Jedynym parametrem metody jest kompletna ścieżka. Teraz spójrzcie na nasz slajd, już po zastosowaniu szablonu (i znajdźcie 12 różnic!):

I jak, 12 różnic znalezione ?

Po znalezieniu różnic (i obwiedzeniu ich kółeczkiem tudzież postawieniu na nich krzyżyka – to nie wybory, jest więc dowolność) wywołujemy metodę Save i zapisujemy zmodyfikowaną prezentację. Następnie, przy pomocy metody Quit, wychodzimy z wystąpienia programu Power Point i całą pracę mamy już za sobą.

No w sumie połowę pracy, bo mieliśmy przecież zastosować szablon we wszystkich prezentacjach, nie w jednej. Bez wchodzenia w zbędne szczegóły, oto skrypt, który dostosowuje wszystkie prezentacje w folderze C:\Presentations do szablonu Ocean.pot:

strComputer = "."



Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")



Set colFileList = objWMIService.ExecQuery _

    ("ASSOCIATORS OF {Win32_Directory.Name='C:\Presentations'} Where " _

        & "ResultClass = CIM_DataFile")



Set objPPT = CreateObject("PowerPoint.Application")

objPPT.Visible = true



For Each objFile In colFileList

    If objFile.Extension = "ppt" Then

        Set objPresentation = objPPT.Presentations.Open(objFile.Name)

            objPresentation.ApplyTemplate _

                ("C:\Program Files\Microsoft Office\Templates\Presentation Designs\Ocean.pot")

        objPresentation.Save

        objPresentation.Close

    End If

Next



objPPT.Quit

I tyle. Teraz już naprawdę mamy całą robotę głowy. Mamy więc w końcu czas, żeby metodą „zaznacz wszystkie różnice” przejrzeć każdą prezentację z osobna, slajd po slajdzie. Chociaż w sumie może powinienem napisać skrypt, który wynajdzie wszystkie takie różnice… Czekam na wiadomości email z zapotrzebowaniem na takież skrypty.

 Do początku strony Do początku strony

Centrum skryptów - Microsoft office