Lucrul cu prezentări

Pentru a face orice lucru în PowerPoint, de obicei va trebui să lucrați cu una sau mai multe prezentări. VBA utilizează obiectul Presentation pentru a reprezenta o prezentare și organizează obiectele de prezentare deschise în colecția Presentations.

Crearea unei prezentări noi pe baza șablonului implicit

Aveți posibilitatea să creați o prezentare nouă pe baza șablonului implicit. Acest lucru este echivalent cu clic pe fila File din Panglica PowerPoint, apoi clic pe opțiunea New din PowerPoint. Pentru aceasta, utilizați metoda Add cu colecția Presentations. Sintaxa este următoarea:

expression.Add(WithWindow)

Iată componentele acestei sintaxe:

  • expression este o expresie necesară care returnează un obiect Presentation. De multe ori, este mai ușor să utilizați direct obiectul Presentations.
  • WithWindow este un argument opțional de tip Long. Setați WithWindow la msoFalse pentru a preveni vizibilitatea noii prezentări – de exemplu, pentru a o crea și manipula fără ca utilizatorul să vadă detaliile. (Puteți să ascundeți temporar prezentarea, astfel încât utilizatorul să nu vadă etapele de construire a prezentării PowerPoint cu ajutorul macrocomenzii.) Valoarea implicită este msoTrue, care face ca noua prezentare să fie vizibilă.

De exemplu, următoarele declarații declară o variabilă obiect de tip Presentation numită myPresentation, creează o prezentare nouă, îi atribuie numele myPresentation și o face invizibilă utilizatorului:

Dim myPresentation As Presentation
Set myPresentation = Presentations.Add(WithWindow:=msoFalse)

Având în vedere că este invizibilă pentru utilizatori, macrocomanda poate manipula prezentarea fără a alarma utilizatorii sau le permite să o modifice. Pentru a crea o prezentare PowerPoint vizibilă, modificați msoFalse în msoTrue.

Înțelegerea valorilor cu trei stări

Acest lucru este rar, dar există în unele cazuri. Metoda Add a obiectului Presentations vă permite să setați argumentul WithWindow la patru stări diferite: msoFalse, msoTrue, msoTriStateToggle sau msoTriStateMixed. True și false sunt stări comune și ușor de înțeles. Dar PowerPoint face uz pe scară largă de două stări neobișnuite numite valori MsoTriState, ambele reprezentând un fel de stare super-booleană. În loc să se limiteze doar la True sau False, o valoare cu trei stări poate fi, de asemenea, în stări speciale. msoTriStateMixed înseamnă că ceva este deopotrivă adevărat, cât și fals în același timp. Iată un exemplu: Dacă un șir conține trei cuvinte, dintre care unul este aldin, șirul este aldin sau nu? Ei bine, răspunsul în VBA este că este un șir mixt. msoTriStateToggle înseamnă că starea este potențial adevărată sau falsă. Cu alte cuvinte, utilizatorul poate face clic pe un control în două stări care resetează starea în ambele sensuri sau codul poate să-l reseteze.

În majoritatea cazurilor, veți dori să setați o valoare cu trei stări la msoTrue sau msoFalse. De fapt, nu-mi pot imagina o situație în care codul dumneavoastră ar trebui să fie setat vreodată la valorile msoTriState. Cu toate acestea, codul ar putea avea nevoie, uneori, să verifice această valoare (pentru a o citi) pentru a afla dacă proprietatea lui este un amestec de valori msoTrue și msoFalse. Amintiți-vă că amestecul înseamnă ceva care este adevărat și fals, în același timp; Toggle înseamnă că ceva este potențial fie adevărat, fie fals. De fapt, nu-mi amintesc asta, pentru că e atât de rar util. Am menționat-o doar pentru că se află în documentația online privind programarea PowerPoint.

Crearea unei prezentări noi pe baza unui șablon

Pentru a crea o prezentare nouă bazată pe un șablon diferit de șablonul implicit, utilizați metoda Open a colecției Presentations. Sintaxa este următoarea:

expression.Open(FileName, ReadOnly, Untitled, WithWindow)

Componentele sintaxei sunt explicate aici (ReadOnly, Untitled și WithWindow sunt toate valori de tip msoTriState – cu trei valori posibile, dar nu luați în seamă acest lucru):

  • expression este o expresie necesară care returnează un obiect Presentations. De multe ori, este mai ușor să utilizați direct obiectul Presentation.
  • FileName este un argument de tip String care specifică calea și numele fișierului de utilizat ca șablon pentru noua prezentare. Acest fișier poate fi fie un șablon în sens convențional, fie o prezentare pe care doriți să o utilizați ca șablon.
  • ReadOnly este un argument opțional care specifică dacă fișierul este deschis cu starea doar în citire (msoTrue) sau cu starea citire/scriere (msoFalse). Atunci când creați o prezentare nouă pe baza unui șablon, nu este necesar să specificați ReadOnly.
  • Untitled este un argument opțional care specifică dacă să deschidă fișierul însuși (msoFalse) sau ca o copie (msoTrue). La crearea unei prezentări noi pe baza unui șablon, setați Untitled la msoTrue.
  • WithWindow este un argument opțional care poate fi setat la msoFalse pentru a preveni vizibilitatea noii prezentări. Valoarea implicită este msoTrue, care face ca noua prezentare să fie vizibilă.

De exemplu, următoarea instrucțiune creează o prezentare nouă pe baza șablonului denumit Capsules.potm situat în folderul C:\Users\NumeUtilizator\Documents\Custom Office Templates\:

Presentations.Open _
FileName: = "C:\Users\NumeUtilizator\Documents\Custom Office Templates\Presentation2. potx", Untitled:=msoTrue

Ca de obicei, înlocuiți numele NumeUtilizator cu numele dvs. Sau specificați o altă cale de fișier către locul în care se află șablonul pe computer.

Deschiderea unei prezentări existente

Pentru a deschide deja o prezentare existentă pe hard disk, utilizați metoda Open din colecția Presentations. Sintaxa este descrisă în secțiunea anterioară. Diferența este că utilizați argumentul FileName pentru a specifica prezentarea pe care doriți să o deschideți (spre deosebire de fișierul pe care doriți să îl utilizați ca șablon pentru crearea unei prezentări noi) și fie omiteți argumentul Untitled, fie îl setați la msoFalse. De asemenea, poate fi necesar să utilizați argumentul OpenConflictDocument pentru a specifica modul de tratare a oricărui fișier de conflict care există pentru prezentarea pe care o deschideți.

De exemplu, următoarea instrucțiune deschide prezentarea existentă numită Train Time .pptm stocată în folderul Z:\Public, deschizând prezentarea pentru editare, în loc să o deschidă doar în citire:

Presentations.Open FileName:="Z:\Public\Train Time.pptm", ReadOnly:=msoFalse 

Deschiderea unei prezentări din Cloud

Secțiunile "Understanding the Word Object Model and Key Objects," și "Lucrul cu Excel Object Model și Key Objects," arată cum se salvează documente în OneDrive și Dropbox. Aici vom deschide o prezentare care a fost stocată pe OneDrive. Modul de contactare a fișierelor din OneDrive este manipulat pentru noi de diferitele servicii cloud. Există probleme de securitate, în special în timpul transmiterii la și de la serverele de stocare, care sunt rezolvate de programatorii acestei companii.

Programarea VBA pentru a stoca sau deschide fișiere din cloud este de a avea calea corectă a fișierului. Este ca și ai stoca ceva pe hard disk. Singura diferență este că fișierele din această locație de pe hard disk sunt, de asemenea, stocate automat (sincronizate) în altă parte a lumii, într-o fermă de servere.

Să presupunem că aveți o prezentare numită PX.pptm stocată în OneDrive. Calea de fișier va fi în mod normal "C:\Users\NumeUtilizator\OneDrive\PX.pptm".

Deci, pentru a deschide această prezentare PX, puteți utiliza acest cod, înlocuind NumeUtilizator cu numele dvs.

Presentations.Open FileName:="C:\Users\NumeUtilizator\OneDrive\PX.pptm", ReadOnly:=msoFalse

Salvarea unei prezentări

Prima dată când salvați o prezentare, trebuie să specificați calea și numele fișierului de utilizat. După aceea, aveți posibilitatea să salvați prezentarea sub același nume sau să specificați o cale diferită, un nume, un format sau toate trei. Este la fel ca opțiunile Salvare și Salvare ca din eticheta File de pe Ribbon.

Salvarea unei prezentări pentru prima dată sau cu un alt nume

Pentru a salva o prezentare pentru prima dată sau pentru a salva o prezentare utilizând o altă cale, nume sau format diferit, utilizați metoda SaveAs. Sintaxa este următoarea:

expression.SaveAs(Filename, FileFormat, EmbedFonts)

Iată componentele acestei sintaxe:

  • expression este o expresie necesară care returnează un obiect Presentation.
  • Filename este un argument de tip String care specifică numele fișierului cu care se salvează prezentarea. În mod normal, includeți calea în FileName; dacă omiteți calea, PowerPoint utilizează folderul curent.
  • FileFormat este un argument opțional care specifică formatul de fișier care va fi utilizat. Deși în prezent există în total 30 de constante SaveAs, tabelul de mai jos le enumeră doar pe cele șapte formate cele mai folosite.
  • EmbedFonts este un argument opțional pe care îl puteți seta la msoTrue pentru a încorpora fonturile TrueType în prezentare, sau la False (implicit) pentru a nu le încorpora.

De exemplu, următoarea comandă salvează prezentarea identificată de variabila obiect myPresentation sub numele HR.pptm în folderul Z:\Shared\Presentations, utilizând formatul paginii web și fără încorporarea fonturilor:

myPresentation.SaveAs FileName:="Z:\Shared\Presentations\HR.pptm", _
   FileFormat:= ppSaveAsHTML, EmbedTrueTypeFonts:=msoFalse

Utilizarea Object Browser pentru a vedea rapid constante și obiecte

Iată un memento util. Atunci când nu aveți nevoie de mostre de cod sau detalii suplimentare, nu trebuie să vă grăbiți să căutați prin sistemul complet de ajutor online pentru membrii sau constantele unui obiect (cum ar fi constantele ppSaveAs afișate în tabelul de mai sus). În schimb, trebuie doar să apăsați F2 în VBA Editor pentru a afișa Object Browser. Apoi, în câmpul de căutare (în partea stângă a pictogramei binoclu), tastați numele obiectului, un membru (proprietate sau metodă) sau un nume de constantă. De exemplu, puteți tasta ppSaveAsPresentation, apoi faceți clic pe pictograma binoclu. Veți vedea întreaga listă de 30 de constante ppSaveAs.

Pentru a vedea lista completă în sistemul de ajutor online, vizitați această pagină web: http://msdn.microsoft.com/en-us/library/office/ff746500.aspx

Salvarea unei prezentări cu numele existent

Pentru a salva o prezentare cu numele existent, utilizați metoda Save. Această metodă nu are argumente, deoarece este posibil un singur comportament.

Următoarea comandă salvează prezentarea activă:

ActivePresentation.Save

Dacă prezentarea la care utilizați metoda Save nu a fost salvată niciodată, PowerPoint nu solicită utilizatorului să specifice numele și locația fișierului. În schimb, PowerPoint salvează prezentarea utilizând numele implicit atribuit ferestrei sale (de exemplu, o prezentare care are o fereastră numită Presentation1 va fi salvată ca Presentation1.pptm) și în folderul curent. Pentru a evita utilizarea acestei locații implicite de nume și cale de fișier, aveți posibilitatea să verificați proprietatea Path a obiectului Presentation înainte de a utiliza metoda Save pentru a determina dacă prezentarea a fost salvată. Dacă nu a fost salvată (dacă Path = ""), atunci veți utiliza metoda SaveAs pentru a specifica folderul și titlul pe care doriți să îl utilizați, ca în acest exemplu:

If ActivePresentation.Path = "" Then
  ActivePresentation.SaveAs FileName:="z:\public\presentations\Corporate.pptm"
  ActivePresentation.Save 
End If

Salvarea unei copii a unei prezentări

În loc să utilizați metoda SaveAs pentru a salva o prezentare sub un alt nume, utilizați metoda SaveCopyAs pentru a salva o copie a prezentării deschise fără a afecta prezentarea deschisă (prezentarea rămâne deschisă și orice modificări nesalvate rămân nesalvate). Sintaxa și argumentele pentru metoda SaveCopyAs sunt aceleași ca și pentru metoda SaveAs:

expression.SaveAs(Filename, FileFormat, EmbedFonts)

De exemplu, următoarea instrucțiune salvează o copie a prezentării active cu numele Copie1.pptm în folderul Z:\Public\Presentations, utilizând același format de fișier folosit de prezentarea activă:

ActivePresentation.SaveCopyAs FileName:="Z:\Public\Presentations\Copie1.pptm"

Salvarea tuturor prezentărilor deschise

Colecția Presentations nu are o metodă Save, dar puteți salva toate prezentările deschise utilizând o buclă, ca și cea afișată în următoarea subrutină. Această subrutină lasă nesalvată orice prezentare care nu are încă atribuit un nume de fișier.

Sub Save_All_Presentations()
Dim myPresentation As Presentation 
For Each myPresentation In Presentations
If myPresentation.Path <> "" Then myPresentation.Save Next myPresentation 
End Sub

Închiderea unei prezentări

Pentru a închide o prezentare, utilizați metoda Close a obiectului Presentation corespunzător. Metoda Close nu are argumente. De exemplu, următoarea instrucțiune închide prezentarea activă:

ActivePresentation.Close

Dacă prezentarea pe care o închideți conține modificări nesalvate, PowerPoint solicită utilizatorului să le salveze. Pentru a evita solicitarea utilizatorului, setați proprietatea Save a obiectului Presentation la True înainte de a utiliza metoda Close. Iată un exemplu:

With Presentations("Karelia Industry.pptm")
.Saved = True 
.Close 
End With

Exportul unei prezentări sau al unor diapozitive în format grafic

Aveți posibilitatea să exportați o întreagă prezentare, un singur diapozitiv sau anumite diapozitive utilizând metoda Export a obiectului Presentation, obiectul Slide sau un obiect SlideRange. Sintaxa pentru metoda de export a unui obiect de prezentare este următoarea:

expression.Export(Path, FilterName, ScaleWidth, ScaleHeight)

Sintaxa pentru metoda Export cu un obiect Slide sau un obiect SlideRange este asemănătoare:

expression.Export(FileName, FilterName, ScaleWidth, ScaleHeight)

Iată componentele acestei sintaxe:

  • expression este o expresie necesară care returnează un obiect Presentation, un obiect Slide sau un obiect SlideRange, după caz.
  • Path (pentru un obiect Presentation) este un argument de tip String care specifică calea folderului în care se salvează fișierele grafice ale diapozitivelor.
  • FileName (pentru obiectele Slide sau SlideRange) este un argument de tip String care specifică numele fișierului de utilizat pentru ilustrația exportată. Includeți și calea în FileName, cu excepția cazului în care doriți ca PowerPoint să utilizeze folderul curent.
  • FilterName este un argument de tip String care specifică filtrul de utilizat. Folosiți și extensia numelui de fișier (JPG, TIF, BMP sau PNG) pentru FilterName.
  • ScaleWidth este un argument opțional de tip Long care poate fi inclus pentru a specifica lățimea graficului în pixeli.
  • ScaleHeight este un argument opțional de tip Long care poate fi inclus pentru a specifica înălțimea graficului în pixeli.

De exemplu, următoarea comandă exportă toate diapozitivele din prezentarea activă în format JPG de 800x600 în folderul Z:\Public\Presentations. PowerPoint denumește fișierele cu Slide1, Slide2 etc.:

ActivePresentation.Export Path:="Z:\Public\Presentations", _
FilterName:="JPG", ScaleWidth:=800, ScaleHeight:=600

Următoarea comandă exportă al șaselea diapozitiv din prezentarea activă în fișierul denumit Slide6.png în folderul Z:\Public\Presentations, folosind formatul PNG:

ActivePresentation.Slides(6).Export _
FileName:="Z:\Public\Presentations\Slide6.png", FilterName:="PNG"

Imprimarea unei prezentări

Pentru a imprima o prezentare, utilizați metoda PrintOut a obiectului corespunzător Presentation. Sintaxa este următoarea:

expression.PrintOut(From, To, PrintToFile, Copies, Collate)

Iată componentele acestei sintaxe:

  • expression este o expresie necesară care returnează un obiect Presentation.
  • From și To sunt argumente opționale de tip Integer care specifică primul și ultimul diapozitiv de imprimat. Dacă omiteți From, PowerPoint imprimă începând cu primul diapozitiv; dacă omiteți To, PowerPoint imprimă până la ultimul diapozitiv.
  • PrintToFile este un argument opțional de tip String pe care îl puteți include pentru ca PowerPoint să trimită imprimarea într-un fișier specificat, în loc de imprimantă.
  • Copies este un argument opțional de tip Integer care specifică numărul de copii ale prezentării sau ale diapozitivelor. Omiteți Copies pentru a utiliza valoarea implicită, 1.
  • Collate este un argument opțional pe care îl puteți seta la msoFalse pentru a preveni ca PowerPoint să colaționeze mai multe copii (care este setarea implicită).

De exemplu, următoarea comandă imprimă toate diapozitivele din prezentarea activă:

ActivePresentation.PrintOut

Următorul exemplu imprimă diapozitivele de la 5 la 12 din prezentarea identificată de variabila obiect myPresentation:

myPresentation.PrintOut From:=5, To:=12

Aplicarea unui șablon la o prezentare, la un diapozitiv sau la un interval de diapozitive

Aveți posibilitatea să aplicați un șablon unei prezentări, unui singur diapozitiv dintr-o prezentare sau unui interval de diapozitive utilizând metoda ApplyTemplate cu obiectul Presentation, obiectul Slide sau obiectul SlideRange. Sintaxa este următoarea:

expression.ApplyTemplate(FileName)

Aici, expression este o expresie necesară care returnează un obiect Presentation, Slide sau SlideRange. FileName este un argument de tip String care specifică calea și numele șablonului.

De exemplu, următoarea instrucțiune se aplică șablonul denumit Clouds.potm stocat în folderul C:\Users\NumeUtilizator\AppData\Roaming\Microsoft\Templates\:

ActivePresentation.Slides(1).ApplyTemplate FileName:= _ 
   "C:\Users\NumeUtilizator\AppData\Roaming\Microsoft\Templates\Clouds.potm"

Ca de obicei, înlocuiți NumeUtilizator cu numele corespunzător.

Următoarea instrucțiune aplică șablonul denumit Mountain Top.potm stocat în folderul Z:\Public\Template la primul diapozitiv din prezentarea denumită Success.pptm:

Presentations("Success.pptm").Slides(1).ApplyTemplate FileName:= _ 
   "Z:\Public\Template\Mountain Top.potm"

Următorul exemplu aplică șablonul de proiectare denumit Disaster.potm stocat în folderul Z:\ Public\Template la un interval de diapozitive - primul, al patrulea și al șaselea diapozitiv din prezentarea activă:

ActivePresentation.Slides.Range(Array(1, 4, 6)).ApplyTemplate _ 
   FileName:="Z:\Public\Template \Disaster.potm"

Lucrul cu prezentarea activă

Proprietatea ActivePresentation a obiectului Application returnează un obiect Presentation care reprezintă prezentarea activă (prezentarea din fereastra activă). Obiectul ActivePresentation poate fi foarte util pentru macrocomenzile executate de utilizator.

Dacă nu este deschisă nicio fereastră, încercarea de a utiliza obiectul ActivePresentation returnează o eroare. Dacă nu sunteți sigur că există o prezentare activă, este o idee bună să verificați mai întâi dacă este deschisă o fereastră înainte de a accesa obiectul ActivePresentation, ca în acest exemplu:

If Windows.Count = 0 Then
  MsgBox "Deschideti o prezentare inainte de a executa această macrocomanda."
  End
End If