Macro (informatică)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , termenul macro indică o procedură sau un „set” sau „bloc” de comenzi sau instrucțiuni , care apar de obicei în timpul executării unui program . Conceptual foarte asemănător cu o funcție care poate fi apelată de evenimente și parametrizată, permițând reutilizarea codului , un concept similar în câmpul sistemului este cel al scriptului shell .

Prin urmare, vă permite să executați o serie sau un bloc de operații / instrucțiuni prin trimiterea unei singure comenzi, reutilizabile și utile pentru „automatizarea” sarcinilor mai complexe decât instrucțiunile individuale la cerere; unele programe au capacitatea de a crea / înregistra și executa macrocomenzi în interior; alternativ, există software de automatizare care vă permite să creați macrocomenzi la un nivel superior și, prin urmare, pentru toate programele care nu le furnizează. Într-o foaie de calcul , unele operațiuni macro tipice sunt inserarea / ștergerea rândurilor / coloanelor, formatarea textului / numărului și culorii, copierea și lipirea valorilor, efectuarea de funcții precum sume, setări de imprimare și salvarea fișierelor .

Conceptul original de „macro” nu prevede utilizarea unui limbaj de programare , deoarece este o simplă înregistrare a unei serii de comenzi deja disponibile în cadrul software - ului ; evoluând în forma lor actuală, macrocomenzile au dobândit un limbaj de programare (de exemplu VBA ), completat cu structuri condiționale (Dacă ... Apoi ... Altfel ...), subrutine , dialog cu utilizatorul prin ferestre pentru „introducerea datelor, realizând o eficiență mult mai mare, dar și o complexitate mai mare în redactarea lor.

Descriere

Nivele de execuție

Macro-ul poate fi salvat la un singur nivel de foaie de lucru, toate registrele de lucru deschise, orice fișier Excel / open office. În acest din urmă caz, macro-ul trebuie salvat în folderul de pornire al programului (XLStart / PERSONAL.XLS, adică Open Office / Startup).

Dacă macrocomanda este salvată în codul foii de lucru unice, este un subrutin privat , care nu este vizibil în lista de macrocomenzi din fișier și este un tip de macro eveniment, executat de fiecare dată când se deschide foaia de lucru la care este asociată. .

De exemplu, dacă doriți să aveți un index dinamic al foilor de lucru prezente într-un fișier Excel, o macro care creează un index al foilor de lucru trebuie să fie asociată cu o foaie de lucru numită „Index”: în practică, pentru a avea un index dinamic un eveniment este utilizată macro, salvată în foaia de lucru, care creează un index static comun.

Rulați pe o selecție curentă de celule

Codul unei macrocomenzi nu se referă neapărat la un anumit rând, coloană sau gamă de celule și poate fi astfel încât să fie executat pe selecția curentă, care se face înainte de lansarea macrocomenzii. De exemplu, dacă utilizatorul dorește să execute macro pe coloana N, rândul 1 sau gama de celule „A2: N20”, este suficient să evidențiați aceste zone ale foii cu mouse - ul , înainte de a lansa macro-ul, care va fi executat.pe ultima selecție curentă de celule.

Pentru a obține astfel de instrucțiuni cu reportofonul macro, pur și simplu selectați zonele de interes înainte de a începe înregistrarea macro și apoi începeți imediat înregistrarea. Înregistratorul generează cod precum: "Selection.Copy", "selection.Autofilter", "Selection.Delete".

Pentru a selecta ultima celulă activă deasupra, dedesubt, la dreapta sau la stânga celei curente, utilizați proprietățile metodei "End": "xlUp", "xldown", "xlToRight", "xlToLeft". Pentru a selecta celulele dintr-un interval de dimensiuni variabile, utilizați aceste referințe cu instrucțiuni precum:

 Range (Selection, Selection.End (xlDown)). Selectați

Această instrucțiune indică extremele intervalului de selectat, pe de o parte, celula selectată de cursor și, pe de altă parte, ultima celulă activă (cu valori sau formule) dintre cele de sub selecția curentă.
Pentru a selecta mai multe coloane, pur și simplu selectați un interval de celule, mai degrabă decât o singură celulă, înainte de a lansa macro-ul.

Dacă zona de selectat depinde de alte intervale de celule, se folosește o variantă de tip:

 Range (Selection, Range ("A1: B" & (Range ("A1"). End (xlDown). Row))). Selectați
,
care selectează intervalul de pornire și intervalul de la A1 la coloana B la rândul în care se găsește ultima celulă ne-goală de sub A1

Pentru a selecta celulele de sub o coloană (de exemplu, coloana 1) obiect de filtrare a datelor:

 ActiveSheet.AutoFilter.Range.Columns (1) .SpecialCells (xlCellTypeVisible). Selectați

Cuibărit

Macrocomenzile pot fi „imbricate” astfel încât o macrocomandă să execute alta care a fost înregistrată anterior. Recorderul, atât în ​​Excel, cât și în Open Office, ține cont de trecerea mouse - ului în meniuri, inclusiv în „macro / record new macro”.

Extensie la toate foile de lucru

Atât în ​​Excel, cât și în Open Office Calc, toate serviciile de sistem pot fi efectuate pe o singură foaie de lucru.

Serviciile de sistem sunt cele care pot fi apelate din afara foii de lucru, precum cele din meniurile „Fișier”, „Editare”, „Date”, „Instrumente”. Programul vă permite să selectați mai multe foi de lucru (CTRL + Foaie), dar efectuează aceste servicii numai pentru foaia curentă, nu vă permite să imprimați, să puneți filtre sau „Editați / înlocuiți cu” pe o selecție de foi de lucru.

Pentru a face acest lucru, aveți nevoie de o macrocomandă care conține comenzile de executat și de o a doua macrocomandă care o numește prin construcția „Pentru fiecare..În continuare” (sau „Pentru N = 1 Pentru a lucra la foi de lucru.Număr”, urmată de „Foi ( N). Activați! "Sau" Application.GoTo ActiveWorkbook.Sheets (N) .Range ("A1: C20") "și instrucțiunea pe care doriți să o executați pe un ciclu de foi), executându-l pe toate foile de lucru ale fișierului curent . Codul arată astfel:

 Sub For_Each ()

  Dim mySheets as Worksheet 'mySheets este o foaie de lucru și Foaia de lucru fișierul curent

  Pentru fiecare MySheets din foi de lucru

    mySheets.Select

    mySheets.Application.Run "PERSONAL.XLS! Macro 1" 'Rulați Macro 1 salvat în PERSONAL.XLS

  Next mySheets 'Mărește contorul, trecând la următoarea foaie de lucru

Sfârșitul Sub

sau, într-un mod mult mai compact:

 Sub Execution_Macro_File_Excel ()
 ActiveWorkbook.Application.Run "PERSONAL.XLS! Macro 1" "Rulați Macro pentru toate foile fișierului curent
 Sfârșitul Sub

Cu următoarele instrucțiuni puteți dezactiva mesajele de eroare, puteți continua executarea macro-ului, puteți minimiza gestionarea grafică a Excel-ului, care, în unele cazuri, ar putea încetini timpul de execuție al macro-ului (la prețul de a nu afișa și controla celulele obiect de pe procesarea terminalului):

 Sub Macro ()
 Application.ScreenUpdating = Fals
 Application.DisplayAlerts = Fals
 Application.EnableEvents = Fals
 AllowUdfs = False 'dezactivează orice funcții definite de utilizator prezente în folder   
 Application.Calculation = xlAutomatic 'setează formula de calcul de la Automat la Manual
 La eroare Reluați în continuare
  [...]

Codul este apoi încheiat cu instrucțiunile „opuse”, care restaurează setările implicite:

 [...]
Application.ScreenUpdating = Adevărat 
Application.DisplayAlerts = Adevărat
Sfârșitul Sub

Extensie la alte fișiere decât cea de înregistrare

Prin calea „Fișier / Deschidere” sau „Fișier / căutare” macro-ul poate efectua operațiuni pe fișiere care nu sunt deschise în momentul lansării macro-ului. Macrocomanda găsește fișierul, îl deschide și execută comenzile înregistrate.

Macro la date

Pentru a efectua un filtru, formulă sau procedură pe o celulă de tip „Data”, fără a-și modifica formatul european, datele trebuie separate prin semnul „*”.

În caz contrar, macrocomanda aduce data în formatul american de tipul "mm / z / aaaa", cu lunile care preced zilele. Acest lucru creează probleme în executarea unei serii întregi de funcții, începând cu extragerea lunii sau a anului conținute în dată.

Macro-uri de evenimente

Vorbim despre macro-urile de evenimente atunci când macro-ul este executat după efectuarea anumitor acțiuni pe foaia de calcul, cum ar fi clic pe un buton, deschiderea unei anumite foi sau a unui fișier Excel.

Dacă macrocomanda este asociată cu deschiderea unei foi de calcul, aceasta trebuie să înceapă ca „Subrutină privată” și să fie copiată în codul paginii (eticheta foii de lucru, clic dreapta, Vizualizare sursă ).

Folosind slash-ul pentru VBA, macro-ul se află în folderul module al paginii în cauză. Referindu-se la programarea orientată pe obiecte , macro-ul eveniment este tratat ca o metodă a obiectului foaie de calcul.

O macro similară este utilizată, de exemplu, pentru a crea un index dinamic al foilor prezente într-un anumit fișier : prin deschiderea foii „Index”, dacă alte foi au fost redenumite sau șterse, macro-ul va actualiza conținutul în consecință.

Anonimizarea macro

Macro-ul poate fi făcut util prin semnificația fișierului și a foilor de lucru, prin înlocuirea acestor afirmații de tipul: ActiveSheet.Select " sau " ActiveSheet.Add " . În caz contrar, dacă macro-ul este rulat pe o foaie de lucru sau un fișier cu un alt nume decât cea înregistrată în cod, executarea returnează un mesaj de eroare.

Software

După cum sa spus anterior, macrocomenzile și tabelele pivot sunt instrumente utilizate pe scară largă în foi de calcul, implementate de programe precum Excel și Open Office Calc .

Toate programele suitei office și Open Office au un motor intern pentru înregistrarea și executarea macro-urilor.

Integrarea între programele aceluiași pachet are loc și sub aspectul macrocomenzilor: este posibil, de exemplu, să înregistrați o macro în Microsoft Access care funcționează cu fișiere Excel și returnează o ieșire textuală în Word.

Există, de asemenea, macro editori, programe dedicate care funcționează cu fișiere a zeci de programe aparținând diferitelor pachete proprietare și open-source: de exemplu, AutoHotkey , AutoIt , iMacros , Macro Mate și AutoMate .

Microsoft Office

Microsoft Office permite executarea de macrocomenzi într-un singur fișier sau prin deschiderea fișierelor salvate cu programele Outlook , Word , Excel , Powerpoint , Publisher , Access . În practică, integrarea este disponibilă pentru programele pachetului Office și prin Internet Explorer la elaborarea datelor publicate de alte aplicații pe web. Înregistratorul de macro este un editor grafic , care generează un cod Visual Basic , bazat pe mișcările mouse - ului și șirurile tastate de la tastatură. Este posibil să asociați macro-ul cu un buton care îl apelează și cu o comandă scurtă de la tastatură (de exemplu, tastând „Alt + F5”) și să-l salvați la diferite niveluri, pentru fișierul utilizat, pentru un folder de fișiere sau la pornirea unui program Office.

Din versiunea 2007 , este posibil să asociați un comentariu la macro și să inserați părți de text explicative și neexecutabile în codul VB. O eroare în care o macrocomandă nu a fost executată automat pe foaia Excel în care este poziționată referința celulei este remediată, ceea ce a făcut ca unele macrocomenzi să fie extinse la o întreagă foaie Excel, la un set de diapozitive Powerpoint și altele asemenea. În plus, referințele relative fac ca întreținerea codului generat să fie mai puțin oneroasă și evită să fie nevoie să rearanjați codul macro la fiecare modificare a numelui fișierului sau a foilor Excel și a organizării foii, cu adăugarea de rânduri / coloane sau deplasarea conținutului de interes către macro.

Star Office

Macrocomenzile StarOffice sunt scrise în limbajul StarBasic , un limbaj proprietar Sun, radical diferit de Office și Microsoft VBA.

Birou deschis

Open Office conține ointerfață de programare a aplicației care permite înregistrarea / compilarea manuală și executarea de macrocomenzi în diferite limbaje de programare, inclusiv: C ++ , Java , Python , CLI [ neclar ] , StarBasic, JavaScript , OLE .

Open Office nu are un mediu de programare pentru Microsoft VBA și nu este compatibil cu acest limbaj. Există versiuni ale programului care permit o conversie între codul VBA și Star Office.

Macrocomenzile Open Office pot funcționa cu o varietate mult mai largă de fișiere decât în ​​Excel 2007. În timpul înregistrării, din meniul Fișier / Deschidere (și în Excel din „Fișier / Căutare fișiere”) vă amintiți fișierele pe care intenționați să le efectuați. Recorderul va scrie codul necesar atât pentru fișierul de pornire, în care s-a început înregistrarea macro-ului, cât și pentru toate cele deschise în acest fel. Extensiile compatibile din OpenOffice includ imagini, fișiere AutoCad, multe programe text, fișiere Notepad (care nu pot fi importate într-o macro Excel) care reprezintă un mod frecvent de comunicare a datelor între aplicațiile proprietare. Macro-urile Openoffice funcționează și cu fișierele Microsoft Office, în timp ce, ca de obicei, nu există interoperabilitate în direcția opusă. Compilatorul de macrocomenzi Excel este mult mai rapid și mai stabil.

LibreOffice

LibreOffice introduce, comparativ cu Open Office (din care derivă) suport pentru macrocomenzile VBA: aceasta face ca macrocomenzile dezvoltate cu Microsoft Office să fie compatibile cu software-ul.

Rămâne suport pentru limbaje de programare acceptate de Open Office.

Interoperabilitate macro

Macrocomenzile salvate în Open Office nu pot fi rulate în Office și invers.

Pentru a face acest lucru, codul macro sursă trebuie rescris în limbajul de programare utilizat de programul țintă pentru macro-uri: acest lucru se poate face manual sau cu recompilatoare automate, interne sau externe programelor în cauză.

Novell și Sun Microsystems au pus la dispoziție, cu colaborarea Microsoft, o versiune a programelor lor Open Office și Star Office compatibile cu Microsoft Office, cel puțin pentru unele caracteristici. Cele două programe au o caracteristică care convertește codul VBA al macro-urilor Excel în propriul limbaj de programare [1] . Pe de altă parte, Microsoft Excel nu conține funcționalități pentru rularea macro-urilor Open Office sau Star Office.

Există, de asemenea, recompilatoare automate pentru a trece de la VBA la StarBasic și invers și au codul necesar pentru a rula macro-ul în noul program.

Notă

Elemente conexe

linkuri externe

Controlul autorității LCCN (EN) sh85079429 · GND (DE) 4125810-1
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT