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