Macrocomenzi
O macrocomandă este alcătuită dintr-un grup de instrucţiuni programate cu ajutorul mediului VBA (VISUAL BASIC for APPLICATIONS) şi are ca scop automatizarea unor acţiuni în cadrul aplicaţiei Excel pentru creşterea eficienţei şi eficacităţii lucrului în Excel.
De obicei, macrocomenzile se folosesc pentru a elimina operaţiunile repetitive care se realizează în Excel. Cu cât o operaţiune include mai multe acţiuni (folosirea funcţiilor sau folosirea altor facilităţi automate), cu atât mai mult se consumă timp inutil. Tocmai pentru astfel de cazuri există posibilitatea înregistrării de macrocomenzi.
Detalii despre modul de lucru cu macrocomenzi folosind limbajul de programare VBA, pe https://sites.google.com/view/macrocomenzi-vba-office-2016/pagina-de-pornire.
Macrocomenzile pot fi create:
1. Prin înregistrare
Click pe butonul Record Macro (pentru a vedea butonul, trebuie activată afișarea etichetei Developer). În acest caz, nu este necesară experienţă în programare: toate operațiunile realizate după apăsarea butonului sunt înregistrate ca și cod Visual Basic și pot fi salvate în Excel, pentru a putea fi repetate ulterior, ori de câte ori este nevoie.
Macrocomanda poate fi rulată din nou
cu click pe butonul Macros (taste rapide Alt+F8) și alegerea macrocomenzii din listă (trebuie activată afișarea etichetei Developer) sau
folosind o combinație de taste alese în câmpul Shortcut Key, la crearea macrocomenzii sau ulterior - în Options.
din aplicația VBA - în acest caz, macrocomanda poate fi și modificată.
2. Prin creare în VBA (necesită cunoştinţe de programare în mediul aplicaţiilor Office).
Mai multe detalii (deocamdată în engleză - traducerea în română nu este disponibilă), aici:
https://docs.microsoft.com/en-us/office/vba/api/overview/excel
Macrocomenzile pot fi realizate şi de la simplu la complex (combinând cele două metode de mai sus), începând cu înregistrarea unei macrocomenzi, apoi continuând cu modificarea codului VBA din macrocomandă (în fereastra VBA).
Macrocomanda pentru copierea unei foi de lucru numită "Sablon" se poate realiza cu Record Macro, care înregistrează operaţiunea de duplicare a foii de lucru. În Visual Basic for Applications (se deschide rapid cu Alt+F11) se poate vedea macrocomanda.
Sub CopiereSablon()
'
' Macrocomanda de CopiereSablon
' Copie foaia de lucru Sablon
'
Sheets("Sablon").Select
Sheets("Sablon").Copy Before:=Sheets(2)
End Sub
Dezavantajul ar fi că Excel va redenumi automat noua foaie de lucru cu Sablon (2).
Ulterior, în VBA se pot introduce, de exemplu:
- o casetă de dialog în care se va tasta de câte ori va trebui să fie copiat şablonul,
- o instrucţiune repetitivă (for) pentru a realiza operaţiunea de copiere de N ori (N = numărul specificat în caseta de dialog).
Dar aici sunt necesare cunoştinţe de programare.
O altă variantă (mai practică) ar fi copierea foii de lucru șablon și redenumirea ei cu nume sugestive, preluate dintr-un centralizator.
În macrocomanda următoare, Excel va copia foaia de lucru Sablon si o va redenumi cu nume preluate din foaia centralizator.
Sub CopiereSablon()
' Macrocomanda pentru CopiereSablon
' Initial, fisierul Excel activ contine doua foi de lucru, numite Sablon si centralizator
' Macrocomanda copie foaia de lucru Sablon si o redenumeste cu numar de inventar preluat din centralizator
' Repeta operatiunea pana parcurge tot intervalul de valori stabilit in wSh.Range - in acest exemplu, "B2:B7".
' Declarare variabile
Dim xRg As Excel.Range
Dim wSh As Excel.Worksheet
Dim wBk As Excel.Workbook
'Set wSh = ActiveSheet
Set wSh = Sheets("centralizator")
Set wBk = ActiveWorkbook
Sheets("centralizator").Select
Application.ScreenUpdating = False
ActiveSheet.Range("B2").Select
For Each xRg In wSh.Range("B2:B7") 'intervalul se modifica, dupa cum este nevoie
With wBk
Worksheets("Sablon").Copy After:=.Sheets(.Sheets.Count)
On Error Resume Next
ActiveSheet.Name = xRg.Value
If Err.Number = 1004 Then
Debug.Print xRg.Value & " deja exista o foaie de lucru cu acelasi nume"
End If
On Error GoTo 0
End With
Next xRg
Application.ScreenUpdating = True
End Sub
Macrocomanda se poate rula direct din VBA sau din fișierul Excel (macrocomenzii i se poate asocia şi un buton în foaia de lucru).