Crearea unei macrocomenzi pentru Excel

Procedura care va fi creată în Excel este scurtă, dar utilă. La pornirea Excel, procedura scrisă va maximiza fereastra Excel și va deschide ultimul fișier folosit. Procedura va ilustra și alte tehnici utile, cum ar fi:

  • Scrierea unei macrocomenzi care se execută la pornirea unei aplicații
  • Lucrul cu evenimente (events)
  • Folosirea Object Browser pentru a găsi obiecte, metode și proprietăți necesare

Pentru a crea procedura, se urmează pașii:

  1. Se pornește Excel dacă nu este deja pornit.
  2. Se apasă Alt+Tab pentru a parcurge ciclic registrele de lucru și a localiza Personal.xlsb. Dacă Personal Macro Workbook este ascuns, clic pe butonul Unhide de pe eticheta View, secțiunea Window din Ribbon. Se selectează PERSONAL.XLSB din lista Unhide Workbook, apoi clic pe butonul OK.
  3. Se apasă Alt+F11 pentru a deschide Visual Basic Editor.
  4. Se verifică dacă Visual Basic Editor este setat ca în secțiunea "Setarea Visual Basic Editor pentru crearea de proceduri" descrisă mai sus.
  5. În fereastra Project Explorer, se extinde VBAProject (PERSONAL.XLSB) dacă este închis, cu dublu clic pe nume sau clic pe semnul + din stânga lui.
  6. Se extinde folderul Microsoft Excel Objects.
  7. Dublu clic pe elementul ThisWorkbook pentru a deschide foaia cu cod în fereastra Code. Obiectul ThisWorkbook reprezintă registrul de lucru curent.
  8. Se verifică dacă Visual Basic Editor are adăugată instrucțiunea Option Explicit în zona cu declarații din partea de sus a codului). Dacă nu, se deschide Tools > Options pentru a afișa caseta de dialog Options, asigurați-vă că este bifată caseta de validare Require Variable Declaration din pagina Editor și apoi faceți clic pe butonul OK (acest pas a fost descris mai sus). Cu toate acestea, de reșinut că, la momentul scrierii cărții, chiar dacă a fost selectată opțiunea Require Variable Declaration (prin meniul Tools > Options din versiunea Excel a editorului VBA), opțiunea Explicit nu este introdusă automat în fereastra Cod.
  9. În fereastra Code, se tastează
Private Sub Auto_Open

și se apasă tasta Enter. Editorul va adăuga parantezele și linia End Sub.

Macrocomenzile au un scop

Cuvântul Private limitează scopul unei macrocomenzi – zona în care poate opera aceasta. Scopul Private face ca macrocomanda să fie valabilă pentru toate procedurile din modulul care o conține, dar nu și pentru procedurile din alte module.

10. Se deschide Object Browser: se apasă tasta F2, sau se alege View > Object Browser, sau clic pe butonul Object Browser de pe bara cu instrumente Standard pentru a afișa fereastra Object Browser. Object Browser se folosește pentru a găsi obiecte, metode și proprietăți necesare pentru o procedură.

11. Prima acțiune care va fi realizată în macrocomandă este de a maximiza fereastra aplicației Excel. Ca în orice altă aplicație, VBA folosește obiectul Application pentru a reprezenta aplicația Excel, dar trebuie găsită proprietatea corectă a acestui obiect pentru a o utiliza. Se selectează Excel din lista Project/Library, în caseta Search Text se scrie maximize, apoi clic pe butonul Search sau se apasă tasta Enter. Object Browser afișează rezultatul căutării în panoul Search Results. Constanta xlMaximized este membru al clasei XlWindowState.

Rezultatul căutării pentru “maximize” din Object Browser

12. Se apasă tasta F7 pentru a activa fereastra Code. (Alternativ, clic pe fereastra Code, sau se alege View > Code, sau din meniul Window se alege Code.)

13. Se tastează application. (litere mici și la final un punct) pentru ca Visual Basic Editor să afișeze o listă, se tastează w pentru a sări la elementele care încep cu W, apoi se selectează elementul WindowState.

14. Se tastează = pentru a introduce elementul WindowState în cod și a afișa lista cu constante valabile pentru WindowState.

15. Se selectează elementul xlMaximized și se apasă tasta Enter pentru a introduce acea proprietate în cod și a trece o linie mai jos pentru a scrie o altă instrucțiune.

16. A doua acțiune pentru macrocomandă este de a deschide ultimul fișier folosit – fișierul 1 din lista cu fișiere recent folosite (aceasta este lista care apare și în lista Recent Documents la clic pe elementul Recent din eticheta File de pe Ribbon). Se apasă tasta F2 pentru a activa din nou Object Browser.

17. Se lasă Excel selectat în lista Project/Library, se tastează recent, apoi se apasă tasta Enter sau clic pe butonul Search. În Object Browser sunt afișate rezultatele căutării (Figura 4.7). Elementul necesar aici este proprietatea RecentFiles a obiectului Application. Proprietatea RecentFiles întoarce ca rezultat colecția RecentFiles, un obiect care memorează informații despre fișierele care se află în lista fișierelor utilizate recent.

18. Se apasă tasta F7 pentru a reveni la fereastra Code. Se tastează application. și se selectează RecentFiles din lista Properties/Methods. Apoi se tastează (1). pentru a indica primul element din colecția RecentFiles și se selectează metoda Open din lista Properties/Methods:

Application.RecentFiles(1).Open

19. Procedura ar trebui să arate astfel:

Private Sub Auto_Open()
Application.WindowState = xlMaximized 
Application.RecentFiles(1).Open
End Sub

20. Se apasă Alt+Q sau File > Close And Return To Microsoft Excel pentru a reveni la fereastra Excel.

21. Clic pe File de pe Ribbon și se alege Save.

22. Clic pe butonul Hide din eticheta View, secțiunea Window de pe Ribbon. Astfel se ascunde PERSONAL.XLSB.

23. Se deschide un document în care se tastează ceva într-o celulă, se salvează și se închide.

24. Se apasă Alt+F4 pentru a ieși din Excel. Dacă apare un mesaj cu întrebarea de salvare modificări realizate în registrul de lucru curent și în Personal Macro Workbook, se alege Yes.

25. Se repornește Excel. Se poate observa cum Excel maximizează automat fereastra aplicației și deschide cel mai recent fișier folosit.

Dacă apare un mesaj de eroare, înseamnă că ultimul fișier folosit a fost redenumit sau mutat în altă parte. Pentru a evita această eroare, se poate adăuga cod de urmărire erori, folosind comanda On Error:

Private Sub Auto_Open()
On Error GoTo Problem
Application.WindowState = xlMaximized Application.RecentFiles(1).Open
Exit Sub
Problem:
MsgBox "Eroare: " & Application.RecentFiles(1).Path & " nu poate fi deschis."
End Sub

Numele Auto_Open este un nume special. Atunci când se redenumește o macrocomandă cu Auto_Open, VBA consideră că acțiunile realizate în acea macrocomandă trebuie executate la pornirea aplicației Excel. Acest nume este unul dintre cele numite events (evenimente) în Excel care pot să se aplice la un obiect, în acest caz evenimentul Open al aplicației Excel. (De reținut că metodele unui obiect sunt acțiuni care pot fi realizate, de exemplu listarea la imprimantă trimite un document la imprimantă. În schimb, evenimentele unui obiect sunt lucruri care pot avea loc, cum ar fi un utilizator care dă clic pe un buton sau deschide o aplicație.)

Cum se pot dezactiva Șabloanele implicite

Atunci când se deschid aplicațiile Office 2016, acestea afișează un set de șabloane. Unii utilizatori nu vor folosi niciodată aceste șabloane și ar prefera comportamentul tradițional al aplicațiilor Office: începând cu un document gol și ocolind acest afișaj de șabloane. Pentru a dezactiva această opțiune, se selectează File > Options, apoi se debifează Show The Start Screen When This Application Starts.