Realizarea Unei Aplicatii Suport Pentru Managementul Calitatii Proiectelor de Dezvoltare Software din Industria Auto
Realizarea unei aplicații suport pentru managementul calitații proiectelor de dezvoltare software din industria auto
Cuprins
I. Introducere in Visual Basic
II. Cunoștințe de bază necesare pentru crearea unei aplicații în Excel – VBA
1. Tipuri de date, variabile și constante
2. Funcții și subrutine
3. Afirmații condiționale
4. Bucle repetitive
5. Obiecte Excel
III. Descrierea aplicației care gestionează informații din multiple proiecte de dezvoltare software
1. Prezentarea documentelor
2. Prezentarea cerințelor
3. Prezentarea automatizării
4. Prezentarea rezultatelor
IV. Concluzii
V. Bibliografie
În această lucrare va fi prezentata o aplicație suport pentru managementul calității în cadrul organizațiilor care gestionează multiple proiecte de dezvoltare software din industria automobilelor.
Prin această aplicație se va arăta de asemenea să utilitatea unui program foarte popular dar care nu este folosit la adevărata lui valoare și anume Excel și partea acestuia de Visual Basic pentru Aplicatii.
Insă pentru ințelegerea și parcurgerea pașilor prin care această aplicație a fost creată, vom vedea întai ce inseamnă Visual Basic si care sunt principalele aspecte ale Visual Basic pentru Aplicații (VBA).
Introducere in Visual Basic
Visual Basic este unul dintre cele mai răspândite limbaje de programare din lume. Motivul major pentru popularitatea sa este că oferă posibilitatea programatorilor să creeze aplicații Windows rapid și ușor.
Originile Visual Basic se găsesc într-un limbaj de programare creat în 1964 de către John Kemeny și Thomas Kurtz. BASIC (Beginners All-purpose Symbolic Instruction Code/Cod simbolic de instrucțiuni pentru toate scopurile pentru începători) a fost inițial un limbaj interpretat intenționat să simplifice procesul de programare și să facă programarea mai accesibilă pentru lumea întreagă. Folosind această filozofie, Microsoft a integrat un interpretator BASIC în sistemul său de operare MS-DOS. În ciuda distribuției extinse și a simplității relative, BASIC nu a fost capabil să concureze cu mai rapidele programe compilate cum ar fi C sau C++. În acest fel, BASIC a ajuns să fie folosit de obicei în scopuri triviale sau educaționale, în timp ce aplicațiile „reale” erau dezvoltate în alte limbaje.
Pe la sfârșitul anilor 1980, Microsoft Windows și alte interfețe grafice de utilizator (GUIs) erau încă în faza de început. Majoritatea calculatoarelor personale încă mai foloseau sisteme de operare bazate pe text. Pe măsură ce oamenii au început să realizeze beneficiile unui sistem de operare grafic, Microsoft Windows a câștigat popularitate. Din păcate, crearea programelor bazate pe Windows era extrem de dificilă. Cantități vaste de cod trebuiau scrise pentru a defini precis cum ar trebui să arate interfața, cât și cum ar interacționa utilizatorul cu aceasta.
Pentru a depăși această problemă, Microsoft a reînviat BASIC în 1991 introducându-l în Visual Basic 1.0. Folosind moștenirea BASIC de simplicitate și sintaxa generală, nouă unealta pentru dezvoltare a oferit programatorilor o cale ușoară pentru crearea de aplicații pentru Windows. În anii ce-au urmat, Microsoft a continuat să îmbunătățească Visual Basic lansând versiuni noi. Acestea au inclus nu numai îmbunătățiri ale mediului de dezvoltare dar și modernizări ale nucleului limbajului BASIC. Aceste modernizări includ construirea obiectelor BASIC ca fiind orientate pe obiecte depășind limitarea de a putea fi interpretabile și dând posibilitatea programatorilor de a genera un cod executabil care se poate compila.
Folosirea Visual Basic
Procesul de creare a unui program în Visual Basic poate fi descris clar în trei etape: (1) Desenarea interfeței pe ecran adăugând comenzi. (2) Definirea caracteristicilor importante ale comenzilor. (3) Scrierea codului pentru a determina cum vor reacționa comenzile la acțiunea utilizatorului.
În primul pas, programatorul creează interfața folosind uneltele de pe ecran. Comenzile Windows, cum ar fi butoane sau căsuțe de input, sunt adăugate spațiului de lucru folosindu-se aplicații similare cu Paint (programul utilitar standard de desenat al Windows-ului). Aproape toate componentele interfeței Windows sunt deja disponibile. Comenzi mai avansate, cum ar fi bare de status, pot de asemenea să fie adăugate.
Fiecare comandă are un set de caracteristici care o face unică. De exemplu, butoanele au proprietăți cum ar fi nume (felul cum programul va face referință la el) și legenda (textul care va fi folosit la etichetarea lui). În etapa a doua, programatorul setează valori inițiale comenzii, pentru a-i personaliza înfățișarea și comportamentul.
În plus față de aceste proprietăți, fiecare tip de comandă are diferite căi prin care utilizatorul poate interacționa cu ea. De exemplu, pe butoane se poate da click, sau un text este introdus într-o căsuță de input. Acestea sunt cunoscute că evenimente. Oricând are loc un eveniment, programul trebuie să răspundă adecvat. Programatorul este responsabil de împuternicirea comenzii atribuindu-i un set specific de instrucțiuni legate de felul în care sistemul trebuie să răspundă la evenimente. Asta presupune de obicei efectuarea unor calcule și apoi modificarea proprietăților de pe ecran ale comenzii pentru a reflecta starea curentă a sistemului.
La acest stadiu, programul trebuie rulat pentru a se constata dacă merge cum trebuie. În timpul testării, programatorul are posibilitatea de a examina mecanismele interne ale programului și chiar de a-l modifica în timp ce rulează. După ce programatorul este convins că aplicația funcționează corespunzător, practic în Visual Basic este alcătuit un program cu executare independentă ce poate fi distribuit altori utilizatori.
Pe lângă crearea de programe și aplicații noi, Microsoft a extins porțiuni ale programului Visual Basic și la programe deja existente. Fiind foarte folosite, aplicații populare precum Microsoft Word, Excel, și Access conțin structuri limitate de Visual Basic cunoscute ca Visual Basic for Applications (VBA). Folosite des că limbaj-macro, VBA poate fi folosit pentru a controla părți ale aplicației existente. Aceasta este o caracteristică utilă ce permite automatizarea anumitor sarcini repetitive sau pentru personalizarea aplicației existente în scopul completării acesteia pentru a satisface nevoile personale ale utilizatorului.
O altă variantă a programului Visual Basic oferă o alternativă la Java script. Visual Basic Scripting Edition, sau VBScript, poate fi încorporată în pagini HTML și distribuită pe Internet. VBScript poate fi util pentru construcția paginilor web dinamice sau pentru validarea inputului de utilizator înainte de a fi executat.
Aceste două dialecte Visual Basic urmăresc aceleași reguli de sinteză ca ediția completă a programului. Deși câteva diferențe există, aceste dialecte permit programatorului să își extindă aptitudinile fără a fi nevoit să învețe un limbaj complet nou.
Ca și predecesorul său text (cel folosit pentru MS-DOS), Visual Basic a simplificat considerabil sarcina programatorilor și din acest motiv se bucura de o distribuire largă. Din nefericire, până la un punct, a moștenit și dezavantajul de a fi un limbaj de programare secundar. Acest concept a apărut de fapt de la compromisul care îl face ușor de folosit și de controlat.
Visual Basic încearcă să ferească programatorul de o parte a detaliilor asociate cu ceea ce se întâmplă la nivele mai adânci ale calculatorului. Asta restricționează programatorul la funcții generalizate, de înalt nivel. Limbaje alternative, că C++ spre exemplu, oferă programatorului mai mult control asupra felului în care procesele au loc, și astfel acesta poate optimiza codul pentru sarcini specifice când este nevoie. Dacă optimizări critice sunt necesare pentru succesul funcționarii programului, Visual Basic ar putea fi neindicat. Totuși, majoritatea aplicațiilor folosite de în mediul de afaceri nu vor beneficia mult de pe urma acestor viteze, în consecință programatorii vor găsi Visual Basic mai atrăgător din punct de vedere al procesului de dezvoltare care este simplist.
Cunoștințe de bază necesare pentru crearea unei aplicații în Excel – VBA
Pentru a ințelege partea pratică a lucrarii, in cele ce urmează vor parcurge cateva aspecte teoretice importante ale Visual Basic pentru Aplicații.
Tipuri de date, variabile și constante
În orice limbaj de programare variabile și constante sunt nume care reprezintă valori. După cum sugerează numele, variabilele își pot schimba valorile, în timp ce constante tind să aibă valori fixe.
Tipuri de date
Toate variabilele și constantele au un tip de date. Prin urmare, înainte de a lucra cu constante și variabile în VBA, este utilă înțelegere tipurilor de date care sunt disponibile. Următorul tabel prezintă tipurile de date VBA, împreună cu o descriere a fiecărui tip și intervalul de valori posibile.
Din tabelul de mai sus, este clar că putem economisi spațiu de memorie, utilizând tipuri de date specifice (ex. Integer mai degrabă decât Long sau Single mai degrabă decât Double). Cu toate acestea, dacă planificam să utilizăm tipurile de date "mai mici", trebuie să fim siguri că al nostru cod se nu va întâlni valori mai mari decât pot fi manipulate în funcție de tipul de date.
Declararea variabilelor și a constantelor
Înainte de a utiliza o variabilă sau constantă, putem să o declarăm. Acest lucru se face prin adăugarea unei linii simple de cod la macro, după cum urmează:
Dim Nume_Variabila As Tip_De_Data
Reținem că în linia de cod, Nume_Variabila ar trebui să fie înlocuit cu numele variabilei reale și Tip_De_Dată ar trebui să fie înlocuit de unul dintre tipurile de date menționate anterior.
Constantele sunt declarate în mod similar, cu o condiție, unei constante trebuie să-i fie întotdeauna atribuită o valoare atunci când este declarată. Exemple de declarare de constante în VBA sunt:
Const Nume_Constanta = 5000
Excel nu ne obliga să declarăm variabile – în mod implicit, toate variabilele din Excel vor avea tipul Variant, cărora le poate fi atribuit un număr sau text.
Prin urmare, în orice moment în timpul programului, putem utiliza orice nume de variabilă (chiar dacă acesta nu a fost declarat), iar Excel, în mod implicit, îi va atribui tipul Variant. Cu toate acestea, acest lucru nu este o bună practică de programare pentru următoarele motive:
1. Memorie și viteză de calcul: Dacă nu se declara unei variabile tipul de dată, acesteia i se va atribui, în mod implicit, tipul Variant. Acest tip ocupă mai multă memorie decât multe dintre celelalte tipuri de date.
În timp ce câțiva bytes în plus pe variabile ar putea să nu pară a fi o cantitate mare de memorie, nu este neobișnuit ca utilizatorii să aibă mii de variabile în programele lor (mai ales atunci când începem să utilizam tablouri). Prin urmare, memoria suplimentară utilizată pentru a stoca tipul Variant în loc de Integer sau Single, se poate aduna în mod semnificativ.
Tipurilor de date Variant le ia mai mult timp pentru a fi procesate decât unele dintre celelalte tipuri de date, așa că dacă avem mii de tipuri de date Variant inutile, acest lucru poate încetini calculele.
2. Prevenirea erorilor de tip "Typo": Dacă declaram mereu variabilele, atunci putem folosi o opțiune VBA care să ne oblige să declarăm variabile:
Acest lucru ne va împiedica să introducem erori în cod prin tastarea accidentală a unui nume de variabilă incorect. De exemplu, s-ar putea să fie folosita o variabilă numită "sVAT_Rate" și, atunci când atribuim o valoare pentru această variabilă, s-ar putea să tastăm accidental "VATRate = 0,175". Începând din acest moment, ne așteptam ca variabilă "sVAT_Rate" să aibă valoarea 0.175, dar nu o are pentru că această valoare a fost atribuit unei variabile diferite (variabilă "VATRate"). Cu toate acestea, dacă am folosit opțiunea VBA care obliga se se declare toate variabilele înainte de a fi utilizate, această eroare va fi evidențiată de către compilatorul VBA.
3. Evidențierea valorilor neaștcând atribuim o valoare pentru această variabilă, s-ar putea să tastăm accidental "VATRate = 0,175". Începând din acest moment, ne așteptam ca variabilă "sVAT_Rate" să aibă valoarea 0.175, dar nu o are pentru că această valoare a fost atribuit unei variabile diferite (variabilă "VATRate"). Cu toate acestea, dacă am folosit opțiunea VBA care obliga se se declare toate variabilele înainte de a fi utilizate, această eroare va fi evidențiată de către compilatorul VBA.
3. Evidențierea valorilor neașteptate ale datelor: Dacă se declara o variabilă de un anumit tip de date, și se încearcă să i se atribuie o valoare de tipul greșit, acest lucru va genera o eroare în program care dacă nu este corectata poate duce la nefuncționarea macro-ului.
Dacă acest lucru poate părea un motiv bun pentru a nu declara variabile, trebuie să ne gândim mai atent – trebuie să știm cât mai curând posibil dacă variabila primește un tip de date neașteptat. În caz contrar, în cazul în care programul continuă să funcționeze, s-ar putea încheia cu rezultate incorecte sau neașteptate într-un moment ulterior, atunci când, probabil, va fi mai greu să se detecteze cauzele erorilor.
De asemenea, este posibil ca macro-ul să se finalizeze cu rezultate incorecte, și este posibil să nu observăm toate erorile – și să continuăm să lucrăm cu date incorecte.
Prin urmare, se recomandă să se declare întotdeauna toate variabilele la programarea în VBA.
Funcții și subrutine
Funcții și subrutine definite de utilizator
În Excel Visual Basic, un set de comenzi care efectuează o sarcină specifică este plasat într-o procedură, care poate fi o funcție sau o subrutină. Principala diferență dintre o funcție VBA și o subrutină VBA este ca o funcție returnează un rezultat, în timp ce o subrutină nu.
Prin urmare, dacă dorim să efectuăm o sarcină care returnează un rezultat (de exemplu însumarea unui grup de numere), vom folosi, în general, o funcție, dar dacă avem nevoie doar de un set de acțiuni care urmează să fie desfășurate (ex. Formatarea unui set de celule), putem putea alege să folosim o subrutină.
Argumente
În VBA, atât funcția cât și subrutina pot transmite date prin argumente, care sunt declarate în funcția VBA sau în definiția subrutinei. De exemplu, am putea avea o subrutină VBA care să adauge un număr întreg la fiecare celulă din gama actuală. Vom putea furniza valoarea întreagă subrutinei printr-un argument, după cum urmează:
Sub AddToCells(i As Integer)
.
.
.
End Sub
Argumente optionale
Putem defini, de asemenea, funcții VBA sau subrutine să aibă argumente opționale. Acestea sunt argumentele pe care utilizatorul le poate furniza doar dacă vrea, în cazul în care sunt omise, procedura va lucra în continuare. Pentru a reveni la exemplul de mai sus, dacă am vrea să facem variabila Integer opțională, codul s-ar modifica după cum urmează:
Sub AddToCells(Optional i As Integer)
Desigur, acest lucru trebuie să fie luat în considerare în codul subrutină. Avem nevoie să spunem subrutinei să verifice dacă argumentul a fost furnizat, înainte de a încerca să-l folosească. Putem verifica dacă un argument a fost furnizat la o procedură, folosind comanda IsMissing, după cum urmează:
Sub AddToCells(Optional i As Integer)
If IsMissing(i) Then
.
.
.
Else
.
.
.
End If
End Sub
VBA ne permite să folosim mai multe argumente opționale într-o procedură, atât timp cât argumentele opționale sunt poziționate la sfârșitul listei de argumente.
Transmiterea argumentelor prin valoare și prin referință
Argumentele pot fi transmise în două moduri la funcțiile VBA:
ByVal – Argumentul este trecut prin valoare. Acest lucru înseamnă că doar valoarea este trecuta la procedura și, prin urmare, orice modificări care sunt făcute la argument în interiorul procedurii se vor pierde în cazul în care se iese din procedura.
ByRef – argumentul este transmis prin referință. Aceasta înseamnă că adresa reală a argumentului este trecut la procedura. Orice modificări care sunt făcute la argument în interiorul procedurei vor fi memorate atunci când se iese din procedura.
Putem specifica dacă un argument este transmis prin valoare sau prin referință la o funcție VBA, cu ajutorul ByVal sau ByRef la definirea procedurii. Acest lucru este arătat mai jos:
Functii Visual Basic
Dacă dorim ca Excel VBA sa efectueze o sarcină care returnează un rezultat, avem posibilitatea de a utiliza o funcție. De exemplu, funcția cu numele arie (area).
Function Area(x As Single, y As Single) As Double
Arie = x * y
End Function
Această funcție are două argumente (de tip Single) și un tip de întoarcere (in cazul de fata Double). Putem utiliza numele funcției (Arie) în codul nostru, pentru a indica ce rezultat dorim să întoarcă (aici x * y).
De acum se poate referi la această funcție (cu alte cuvinte se poate apela funcția) în altă parte a codului nostru prin simpla folosire a numelui funcției și dand o valoare pentru fiecare argument.
Subrutine Visual Basic
Editorul VBA recunoaște o subrutină, deoarece comenzile sunt poziționate între următoarele linii de început și de sfârșit:
Sub
.
.
End Sub
Urmatorul cod este un exemplu de o simpla subrutină VBA care aplică formatarea la zona de celule selectate. Celulele sunt formatate pentru a fi aliniate central (atât orizontal cât și vertical) și să aibă o dimensiune de font furnizata de utilizator:
Sub Format_Centered_And_Sized(Optional iFontSize As Integer)
Selection.HorizontalAlignment = xlCenter
Selection.VerticalAlignment = xlCenter
If Not IsMissing(iFontSize) Then Selection.Font.Size = iFontSize
End Sub
Exemplul de mai sus ilustrează modul în care o subrutină poate efectua acțiuni, dar nu și întoarce valori. Acest exemplu include, de asemenea, argumentul opțional, iFontSize. Dacă iFontSize nu este furnizat la subrutina, dimensiunea fontului actual nu este schimbat. Cu toate acestea, în cazul în care este furnizat iFontSize funcției, gama curentă este setata să aibă dimensiunea fontului furnizat.
Afirmații condiționale
Principalele instrucțiuni condiționale sunt afirmațiile If Then și Select Case. Ambele evaluează una sau mai multe condiții și, în funcție de rezultat, executa acțiuni specifice.
Afirmația Visual Basic If Then
Afirmația If Then testează o condiție și, dacă se evaluează la valoarea de adevăr, desfășoară o serie de acțiuni. Acțiuni alternative pot fi specificate dacă condiția se evaluează la valoarea de fals.
Forma afirmatiei If then este:
If Conditie1 Then
Actiune daca conditia 1 este satisfacuta
ElseIf Conditie2 Then
Actiune daca conditia 2 este satisfacuta
Else
Actiune daca nici o conditie nu este satisfacuta
End If
În cele de mai sus, dacă se doreste, afirmatiile Elseif și Else pot fi omise.
Afirmatia Visual Basic Select Case
Afirmația Select Case este similara cu If Then, prin faptul că testeaza o expresie, și efectuează diferite acțiuni, în funcție de valoarea expresiei.
Forma afirmatiei Select Case este:
Select Case Expresie
Case Valoare1
Actiune daca expresia se potriveste valorii 1
Case Valoare2 sau Expresie2
Actiune daca expresia se potriveste valorii 2
.
.
.
Case Else
Actiune daca expresia nu se potriveste nici unei valori
End Select
In Blocul de mai sus, partea Case Else este optionala.
Bucle repetitive
Dacă e nevoie sa îndeplinim aceeași sarcină de mai multe ori (probabil pentru mai multe elemente ale unui tablou) putem folosi una din buclele VBA.
Aceste bucle sunt:
Bucla For
Bucla Do While
Bucla Do Until
Fiecare dintre acestea de mai sus sunt discutate separat în următoarele secțiuni.
Bucla Visual Basic For
Bucla Visual Basic For are două formulare separate. Acestea sunt For Next si For Each.
Bucla For Next
Bucla For next stabilește o variabilă pentru un set de valori specificat, și pentru fiecare valoare, se execută codul VBA în interiorul buclei. Aceasta se explică cel mai bine printr-un exemplu simplu:
For i = 1 To 10
Total = Total + iArray(i)
Next i
Bucla simpla de mai sus ii setează variabilei i valorile 1, 2, 3, …, 10, și pentru fiecare dintre aceste valori, se execută codul VBA din interiorul buclei. Se adaugă iArray pentru fiecare dintre intrările matricei variabilei Total.
În exemplul anterior, nu se specifică o dimensiune a pasului, astfel încât bucla utilizează dimensiunea implicit de 1. Modificarea pasului se poate face folosind cuvântul cheie Step, așa cum se arată în următorul exemplu simplu.
For d = 0 To 10 Step 0.1
dTotal = dTotal + d
Next d
Deoarece mărimea pasului este specificat ca 0,1, valoarea d este setată la valorile 0, 0,1, 0,2, 0,3, 9,9, …, 10.0 pentru fiecare tura a buclei.
Deși exemplele anterioare toate arată creșterea cu pași pozitivi, puteți utiliza, de asemenea, si dimensiuni negative pentru masura pasului.
Bucla For Each
Bucla For Each este similară cu cea For Next, dar, în loc de a rula printr-un set de valori pentru o variabila, bucla ruleaza prin fiecare obiect in cadrul unui set de obiecte. De exemplu, următorul cod arată o buclă folosita pentru a lista fiecare foaie de lucru in registrul de lucru Excel curent:
Dim wSheet As Worksheet
For Each wSheet in Worksheets
MsgBox "Found Worksheet: " & wSheet.Name
Next wSheet
Afirmația Exit For
Dacă, vrem să ieșim dintr-o buclă For mai devreme, puteți folosi afirmația Exit For. Această afirmație face ca VBA să sară din bucla și să continue cu următoarea linie de cod din afara ei. De exemplu, am putea căuta o anumită valoare într-o matrice. Am putea căuta fiecare intrare de matrice, dar atunci când vom găsi valoarea pe care o căutam, nu mai dorim să continue căutarea și s-ar putea ieși din bucla înainte de a ajunge la sfârșitul acesteia.
Afirmația Exit For este ilustrată în exemplul următor, care trece prin 100 de intrări, comparând fiecare cu valoarea "dVal". Se iese mai devreme din bucla în cazul în care dVal este găsit în matrice:
For i = 1 To 100
If dValues(i) = dVal Then
IndexVal = i
Exit For
End If
Next i
Bucla Do While
Bucla Do While este mult mai ușor de utilizat decât pentru bucla For, pentru ca nu avem nevoie sa setati o stare de început, ci doar condiția finala. Iată structura bucle Do While:
Do While [CONDITION]
Loop
Aici, bucla merge până când starea de testare la început se evaluează la valoarea fals. De îndată ce VBA detectează că starea de test este falsă se va ieși din buclă.
Cu toate acestea, avem nevoie de o linie de cod care să crească variabila din buclă, altfel vom crea o buclă infinită. În codul de mai jos, se creștere variabilă contor cu 1 de fiecare dată când se trece prin buclă:
Do While contor < 5
contor = contor + 1
Loop
Dacă nu am incrementa variabila contor, atunci in nici un fel variabila VBA nu ar ajunge la starea de final adica variabila contor sa fie mai mica de 5.
Dacă dorim, putem adăuga starea la sfârșit după cuvântul Loop:
Do
contor = contor + 1
Loop While contor < 5
Diferența aici este că orice cod aveți pentru bucla el va executa cel puțin o dată, în cazul în care condiția este la sfârșit. În cazul în care condiția este de la început, codul de buclă nu se va executa dacă condiția se evaluează deja ca fiind falsă.
Bucla Do Until
Ea este foarte similară cu Do While. Bucla execută în mod repetat o secțiune de cod până când o condiție specificată este evaluată la adevărat. Acest lucru este arătat în următoarea subrutina, o buclă Do Until este folosită pentru a extrage valorile din toate celulele din coloana A din o foaie de lucru, până când întâlnește o celulă goală:
Do Until IsEmpty(Cells(iRow, 1))
dCellValues(iRow) = Cells(iRow, 1).Value
iRow = iRow + 1
Loop
În exemplul de mai sus, condiția isEmpty (Cells (iRow, 1)) fiind la începutul, se va intra în buclă doar dacă prima celulă nu este goală.
Cu toate acestea, așa cum s-a ilustrat cu bucla Do While, s-ar putea să se dorească să se intre în buclă cel puțin o dată, indiferent de condiția inițială. În acest caz, starea poate fi așezată la sfârșitul buclei, după cum urmează:
Do
. . .
Loop Until IsEmpty(Cells(iRow, 1))
Obiecte Excel
Termenul Obiecte Excel se referă la entitățile care alcătuiesc un registru de lucru (workbook), cum ar fi foi de lucru (worksheets), rânduri (rows), coloane (columns), zone de celule (cell ranges), și Workbook-ul în sine. Fiecare obiect în Excel are un număr de proprietăți, care sunt stocate ca o parte a acelui obiect.
De exemplu, proprietățile unui obiect Excel foaie de lucru ar include numele foii de lucru, prorpietati de protecție, proprietati vizibile, derulare zonă, etc. Prin urmare, în cazul în care în timpul executării unui macro, avem nevoie sa ascundem o foaie de lucru Excel, am avea nevoie sa accesam obiectul de lucru și sa modificam proprietatea "vizibil".
Excel VBA are, de asemenea, un tip special de obiect, care este cunoscut ca o colecție. După cum sugerează și numele, o colecție se referă la un grup de obiecte Excel. De exemplu, colecția rânduri (rows) este un obiect ce conține toate rândurile de pe o foaie de lucru (worksheet).
Următorul tabel listează unele dintre obiectele Excel mai frecvent utilizate.
Tabelul de mai sus descrie modul în care putem accesa obiecte Excel, prin intermediul obiectelor "părinte". De exemplu, o zonă de celule poate fi indicată prin expresia:
Workbooks ("WB1"). Worksheets ("WS1"). Range ("A1: B10")
Cu toate acestea, în cazul în care "WB1" este registrul de lucru activ curent, nu aveți nevoie să includeți trimiterea la aceasta. Asta se datorează faptului că, atunci când nu este specificat nici un registru de lucru, o trimitere la Worksheets accesează automat registrul de lucru activ curent. Prin urmare, următorul text va întoarce intervalul necesar:
Worksheets ("WS1"). Range ("A1: B10")
În mod similar, în cazul în care "WS1" este pe foaia de lucru activa curent, nu aveți nevoie să includeți trimiterea la aceasta. Acest lucru se datorează faptului că, atunci când nu este specificată nici o foaie de lucru, un apel la gamă accesează automat foaia de lucru activă curentă. Prin urmare, următoarea declarație simplă va întoarce în continuare intervalul necesar:
Range ("A1: B10").
Un alt lucru important despre Excel VBA este ca tabul „Developer” nu este implicit activat la instalarea pachetului Office.
Acest tab se poate activa accesând butonul Microsoft Office, accesând butonul „Excel options”, click pe categoria „Popular” și apoi selectând opțiunea „Show Developer tab în the Ribbon”, precum se poate vedea și în imaginea de mai jos:
Fig.1. Tabul „Developer”
Fig.2. Excel Options
Descrierea aplicației care gestionează informații din multiple proiecte de dezvoltare software
În cele ce urmează va fi prezentata aplicația suport pentru managementul calității în cadrul organizațiilor care gestionează multiple proiecte de dezvoltare software din industria automobilelor.
Va fi de asemenea arătată utilitatea unui program foarte popular dar care nu este folosit la adevărata lui valoare și anume Excel și partea acestuia de Visual Basic pentru Aplicatii.
Pentru acest lucru a fost folosit contextul documentarii proiectelor de dezvoltare software în câte un fișier Excel în care este descrisă detaliat situația fiecăruia.
Doresc să menționez că prin proiect se înțelege punerea în practică a cerințelor specifice legate de dezvoltarea software, ale unui anumit client din industria auto.
În contextul prezentat proiectele pot fi de 3 feluri și anume:
de software (SW),
de algoritmi (Algo) și
de calibrare ( ca subcategorie a proiectelor de algoritmi).
Fiecare proiect descris în Excel va avea și un status, adică una din culorile roșu, galben sau verde, care se va stabili lunar în funcție de situația proiectului, cu scopul asigurării calității și raportării către părțile interesate. Deci ne va interesa situația globală a tuturor proiectelor la sfârșitul fiecărei luni.
Pentru o privire de ansamblu mai bună și o gestionare eficientă și eficace, într-un fișier Excel separat va fi descrisa situația tuturor proiectelor și de aceea, se doreste ca statusul fiecărui proiect să fie adus automat din fiecare fișier excel corespunzător unui proiect în fișierul cu situația globală, pentru a nu mai verifică fiecare fișier de proiect în parte. Acest fișier global va fi numit Global Quality Report ( Raport Global al Calitatii).
Pentru o mai bună înțelegere, in cele ce urmeaza va fi descrisa această automatizare în patru pași și anume:
Prezentarea documentelor (fișierele Excel descrise anterior);
Prezentarea cerințelor – care este rezultatul dorit
Prezentarea propriu-zisă a automatizării prin descrierea butonului „Update status” ( Actualizeaza starea) și a codului corespunzător;
Prezentarea rezultatelor afisate in urma rularii scriptului.
Prezentarea documentelor
Doresc sa menționez că denumirile sunt in limba engleză deoarece aplicația este dezvoltată pemtru o companie multinațională.
Fișierul Raport Global al Calitatii
Este compus din 3 foi de lucru importante și anume:
Foaia de lucru „Proiecte”
În acestă foaie de lucru vom găsi informații generale despre proiecte printre care și:
nume,
tipul proiectului (împărțit în două categorii mari: SW și Algo),
statusul proiectului care poate fi: Ongoing (Q Report), maintenance (no Q Report), On hold, Finished, Not started și NA,
persoanele responsabile și
complexitatea proiectului (High, Medium, Low),
dupa cum se poate vedea și în imaginea următoare:
Fig. 3.1.Informatii generale despre proiectele de software
Fig.3.2. Informatii generale despre proiectele de algo ( algo si/sau calibrare)
Foaia de lucru „GlobalQ Report SW”
În acestă foaie de lucru găsim o parte din informațiile din sheet-ul Proiecte precum și informații legate calitatea dezvoltării sw cum ar fi numărul de erori întâlnite în proiect, statusul proiectului, și în cazul în care statusul este RED avem 3 coloane suplimentare în care se justifică acest status:
Fig. 4.1. Foaia de lucru SW– informatii generale
Fig.4.2. Foaia de lucru SW – calitatea dezvoltarii sw
Fig.4.3. SW sheet – Coloane pentru justificarea statusului RED al proiectului
Foaia de lucru „Global Q Report Algo”
În acestă foaie de lucru, ca și în cel corespunzător proiectelor de sw, găsim o parte din informațiile din foaia de lucru Proiecte precum și informații legate calitatea dezvoltării algoritmilor. Diferența se poate vedea în partea de informații generale, precum este prezentat în Fig. 5.:
Fig. 5. Foaie de lucru Algo– informatii generale
Prezentarea fișierului care descrie situația unui proiect.
Acest fisier de status corespunzator fiecarui proiect este stocat intr-un program numit IMS, in structura de foldere a proiectului, in vederea respectarii metodei de Configuration Management.
Acest tool a fost creat in vederea respectarii standardelor automotive de dezvoltare a software-ului din punctul de vedere al managementului configuratiei si nu numai.
Managementul configuratiei este esential pentru succesul proiectelor de dezvoltare SW din urmatoarele motive:
Managementul Configuratiei este calea prin care informatia impartita de catre mai multi utilizatori este controlata si mentinuta.
Metodele de management al configuratiei asigura cai prin care se poate indetifica, urmari si controla sistemele de dezvoltare din stadiul incipient pana la maturitatea softului si chiar pana la iesirea acestuia din uz.
Managementul nivelelor de referinta ( baseline) si a produselor ingineresti asigura un control sustinul al informatiei in timp ce functiile ingineresti pot respecta procesul.
Managementul configuratiei asigura vizibilitatea in proiect din punctulul de vedere al indicatorilor de schimbare a cerintelor clientului, numarul de defecte, ce utilizator a modificat fisierele do cod in urma schimbarilor cerute si cand anume s-a facut aceasta modificare, pe toata durata de viata a proiectului.
Acest program numit IMS a fost dezvoltat de firma PTC pentru managemntul sistemelor software pe toata durata de viata a acestora. A fost publicat in anul 2001 si asigura managementul dezvoltarii unui proiect de software prin managemetul cerintelor clientului, a cerintelor de schimbare, a problemelor, a testarii si totodata permite si versionarea documentelor pentru o mai buna trasabilitate.
IMS este bazat pe limbajul Java si se pot crea scripturi pentru usurinta lucrului cu acest program, scripturi bazate pe Java API ( Application Programming Interface).
Pentru toate tipurile de proiecte de dezvoltare ( SW, Algo ) se folosesc fișiere care respectă același format, al cărui aspecte principale vor fi prezentate în cele ce urmează, toate aceste fisiere de status fiind stocat in partea de Management al Configuratiei al tool-ului numit IMS.
Aceste documente conțin două foi de lucru numite „Header page” și „SWQ Report”/ „AlgoQ Report”.
În prima foaie de lucru vom găsi tipul proiectului (celula C1) și numele acestuia (Range A14: K14):
Fig. 6.1. Tipul proiectului
Fig. 6.2. Numele proiectului
În a doua foaie de lucru vom găsi date precum:
dată (celula B6),
starea proiectului,
un tabel în care, dacă există, vom găsi descrise deviații ale proiectului, cu un responsabil, o acțiune alocată, și aria de proces de la care s-a deviat:
Fig.7. Elemente ale foii de lucru „SWQ Report”/ „AlgoQ Report”
Prezentarea cerințelor
Fișierele Excel corespunzătoare fiecărui proiect vor fi stocate într-un folder, prin urmare, se doreste ca după apăsarea butonului „Actualizeaza situatia” fiecare dintre aceste fișiere să fie accesat și informațiile dorite să fie copiate în fișierul principal numit Raport Global al Calitatii.
Avand in vedere ca fisierele de status pentru fiecare proiect este stocat in tool-ul IMS, este necesara folosirea unor comenzi, intr-un fisier de tip *.bat, care sa suprascrie varianta fisierului stocat local cu ultima varianta valida pe server, in IMS.
Locatia de pe calculator trebuie sa fie o oglinda a ceea ce exista deja pe server, aceasta oglinda numindu-se Sandbox. Prin intermediul acestui sandbox se face practic legatura dintre ce exista pe server, in IMS, cu ce exista local, pe calculatorul utilizatorului.
Dupa ce acest sandbox este facut, se va rula scriptul care aduce local ultima varianta valida de pe server, a fisierului de status al proiectului de dezvoltare SW. Acest script contine comenzile de sicronizare a fisierului de status pentru fiecare proiect de dezvoltare, comanda care se poate vedea in cele ce urmeaza, intr-o forma generica:
si resync –sandbox=”calea catre fisierul existent – in sandbox”\project.pj –recurse –nooverwriteChanged –user=uidg4943 –password=
Dupa ce sunt aduse ultimile revizii valide ale fisierelor de status, acestea trebuie copiate intr-un singur folder, de unde vor fi mai apoi prelucrare de codul VBA aflat in fisierul Global Quality Report.
Aceasta copiere se fac tot prin intermediul unui fisier de tip batch, care va contine cate o linie de comanda pentru fiecare fisier ce trebuie copiat.
Generic, aceasta comanda este:
@copy /Y "D:\calea catre fisier/numele fisierului" „D:\ calea catre folderul unde se va copia”
Dacă data din fișierul Excel al unui proiect nu este conforma cu luna raportată (luna aleasă din lista la accesarea butonului), nu se va mai copia statusul ci se va pune „–”. Se va proceda astfel deoarece se presupune că în luna raportată, statusul proiectului nu a fost actualizat.
Dacă statusul proiectului este RED, inginerul de calitate responsabil pe acel proiect va marca deviația care a cauzat acest status cu un „r” în dreptul acesteia, pe coloana P, că în Fig. 8., aceasta deviație urmând a fi copiată în fișierul principal Raport Global al Calitatii în coloană „Root cause for deviation”(Motivul de bază al deviației).
Fig.8. Marcarea deviatiei care a cauzat statusul RED al proiectului
Pentru proiectele care au statusul diferit de „Ongoing (Q Report)”( in curs de desfasurare), adică nu se mai raportează situația proiectului și deci un fisier de stare pentru acele proiecte nu există, să fie automat pus „-”.
Prezentarea automatizării
În linii mari, principiul codului VBA din spatele automatizării este prezentat în următoarea schemă logică:
Vom începe prin a creea elementele de interfață precum butonul „Actualizează situația”(Update status), poziționat în foaia de lucru Proiecte, în partea superioară a acestuia:
Fig.9.1. Butonul „„Actualizează situația””
Pentru a intra in partea de Visual Basic trebuie sa accesăm tab-ul Developer -> click pe „Design Mode” -> click dreapta pe buton -> selectăm View code:
Fig.9.2. Vizualizarea codului butonului „Actualizează situația”
După cum putem vedea în fereastra cu proprietățile butonului, numele butonului care va fi referit în cod este Cmdupdate, și numele care apare pe buton, poate fi modificat la secțiunea „Caption”.
Fig.9.3. Proprietatile butonului „Actualizează situația”(Update status)
Pentru a lega butonul de listă cu lunile anului care apare la accesarea acestui buton, următoarea funcție a fost scrisă:
Fig.9.4. Codul butonului „Actualizează situația”
FrmMonthList este de fapt un formular (User form), care conține două butoane de comandă și o listă, că în Fig. 10.1. După alegerea lunii dorite din lista se va apăsa butonul „Submit” pentru începerea rulării codului, sau butonul „Cancel”, dacă rularea codului nu este acțiunea dorită.
Fig 10.1 User form: „Select the date”( Selecteaza data)
Lista și cele două butoane de comandă au fost introduse prin intermediul ferestrei Toolbox, și editate manual (dimensiune, așezare în formular). Fereastra Toolbox este prezentată în Fig.10.2.:
Fig.10.2. Fereastra Toolbox
Listă are ca sursa celulele BB2:BB13, după cum se poate vedea și în fereastra de proprietăți a listei, în câmpul „RawSource” (Fig.10.3).
Fig.10.3. Lista cu lunile anului în care se va raporta statusul
Codul butonului Cancel este cel prezentat în figură următoare și tot ce face este să iasă din formular (iese implicit și din acțiunea butonului „Actualizează situația”):
Fig.10.4. Butonul Cancel
Urmatorul buton despre care vom discuta este butonul Submit. Pentru a vedea codul vom da click dreapta pe buton -> View code.
Fig.11.1. Accesarea codului butonului Submit
Structura funcției corespunzătoare butonului Submit este următoarea:
Private Sub cmdSubmitDate_Click ()
Codul ce urmează a fi executat
End Sub
În prima parte a acestei funcții vom declara variabilele pe care le-am folosit pe parcursul programului. Este foarte important ca variabilele să fie declarate deoarece dacă folosim o variabilă nedeclarată, acesteia îi este atribuit automat tipul Variant care, pe lângă faptul că ocupă mai multă memorie decât multe dintre celelalte tipuri de date, poate cauza apariția erorilor precum „Runtime error 13: Type mismatch”.
În pasul următor, vom copia valorile de pe coloana proiectelor de software din foaia de lucru GlobalQ Report SW pe coloana DI și de pe coloana proiectelor de algoritmi din foaia de lucru Global Q Report Algo pe coloana DJ deoarece celulele din coloanele inițiale au valori cu referință din sheeet-ul Project, și nu se pot accesa din cod. Un exemplu de celulă cu referință se poate vedea în imaginea următoare:
Fig.11.2 Exemplu de celulă cu referință
Codul aferent acestei activități de copiere este următorul:
Fig.11.3. Copierea coloanelor cu numele proiectelor SW/Algo
Și pentru că în Excel celulele selectate pentru copiere rămân selectate și după terminarea acestei acțiuni, am adăugat o comandă de deselectare a celulelor deja selectate, după cum se poate vedea în figură următoare:
Fig.11.4. Deselectarea celulelor dupa acțiunea de copiere
Următorul aspect tratat constă în completarea automată a celulelor corespunzătoare situatiei cu o linie, „-”, în cazul în care proiectele au statusul diferit de „Ongoing (Q Report)”. Comenzile corespunzătoare acestor acțiuni sunt prezentate mai jos:
‚ For the projects that have the status<> ongoing, fill the status on the reporting month with „-„
Worksheets(„Projects”).Select
For b = 3 To 250
If Cells(b, 3) <> „NA” And Cells(b, 4) <> „Ongoing(Q Report)” Then ‚ For SW Projects
projectname = Cells(b, 3).Value
Worksheets(„GlobalQ Report SW”).Select
Cells(Columns(„DI”).Find(projectname, LookAt:=xlWhole, MatchCase:=False).Row, Rows(3).Find(reportmonth).Column) = „-„
Worksheets(„Projects”).Select
End If
If Cells(b, 10) <> „NA” And Cells(b, 12) <> „Ongoing(Q Report)” Then ‚ For Algo Projects
projectname = Cells(b, 10).Value
Worksheets(„Global Q Report Algo”).Select
Cells(Columns(„DJ”).Find(projectname, LookAt:=xlWhole, MatchCase:=False).Row, Rows(3).Find(reportmonth).Column) = „-„
Worksheets(„Projects”).Select
End If
Next b
Prin intermediul unei structuri For.. Next:
vom parcurge fiecare linie a foii de lucru Proiecte,
vom testa dacă statusul proiectului este diferit de Ongoing (Q Report) și dacă da,
vom reține numele acestuia, și în foaia de lucru GlobalQ Report SW/Global Q Report Algo se va pune „-” în celula corespunzătoare proiectului și lunii raportate.
Linia o aflăm cu comanda Columns („DJ”). Find (projectname, LookAt: =xlWhole, MatchCase: =False). Row, care caută numele proiectului pe coloana anterior copiată și returnează numărul rândului pe care se afla.
În mod asemănător, coloana o aflam căutand pe linia 3(capul de tabel) coloana corespunzătoare lunii alese din listă, prin intermediul comenzii Rows (3). Find (reportmonth). Column, care va returna numărul coloanei.
Mai departe, pentru a colecta informațiile din fisierele Status Sheet este necesar să deschidem fiecare fișier Excel pe rând, acest lucru făcându-se prin intermediul secvenței de cod următoare:
Fig.11.5. Secvența de cod pentru deschiderea fiecărui fișier Excel din folder
Variabilele MyFolder și MyFile sunt de tip String, adică șir de date. MyFolder este inițializata cu calea către folderul unde se afla fișierele Status Sheet. Prin intermediul unei bucle Do While… Loop se va deschide fiecare Excel.
După ce deschidem un fișier Excel care conține informații despre un proiect, vom testa întâi tipul proiectului, pentru a ști care din foile de lucru GlobalQ Report SW sau Global Q Report Algo din fișierul global Raport Global al Calitatii va fi folosit pentru a fi completate informațiile.
Și vom începe cu o condiție care testează dacă proiectul este de tip Algo, și dacă este, mai departe se va verifica dacă luna din data selectată din listă (Month (datalist)) este aceeași cu luna din data existenta în fisierul Status Sheet:
Fig.11.6. Testarea tipului proiectului și a datei
Aici vom avea următoarele situații:
Proiectul este de tip Algo însă data nu corespunde, caz în care în fișierul global se va pune „-”, cu următoarea secvență de cod corespunzătoare:
Else
' the dates are not the same
If (Worksheets("Header page").Range("A14").Value <> "") Then
projectname = Worksheets("Header page").Range("A14").Value ' memorize the project name
Else
projectname = Worksheets("Header page").Range("A13").Value ' memorize the project name
End If
Workbooks(numewkb).Activate ' Activate Global Q Report
Worksheets("Global Q Report Algo").Select
Cells(Columns("DJ").Find(projectname, LookAt:=xlWhole, MatchCase:=False).Row, Rows(3).Find(reportmonth).Column) = "'-"
Workbooks(WkbSS).Activate
End If
b. Nu este proiect de Algo caz în care va testa dacă este proiect de SW;
c. Este proiect de Algo, și data corespunde, caz în care vom merge mai departe cu condițiile.
Mai întâi vom activa foaia de lucru AlgoQ Report al Status Sheet-ului, și prin intermediul unei structuri For vom căuta tabelul care conține situatia proiectului care a fost prezentat anterior în Fig.7., mai întâi după cuvintele RED, YELLOW și GREEN, și apoi, când a fost găsită prima linie care să conține unul dintre aceste cuvinte, vom testa dacă pe coloana imediat următoare este găsit „x”. Secvența de cod care face acest lucru este prezentată mai jos:
Worksheets("AlgoQ Report").Select
For i = 30 To 100
If (UCase(Cells(i, 7).Value) = "RED" Or UCase(Cells(i, 7).Value) = "YELLOW" Or UCase(Cells(i, 7).Value) = "GREEN") Then
If (LCase(Cells(i, 8)) = "x") Then ' if "x" is found
Această căutare se va face pe coloanele G – pentru culori și H – pentru „x”. Dacă nu vor fi găsite informații pe aceste coloane, se va căuta pe alte două coloane, L și M, însemnând că proiectul este de Calibrare.
Dacă vor fi găsite însă informațiile necesare, următorul pas este să copiem statusul proiectului din fisierul Status Sheet în documentul Raport Global al Calitatii, prin intermediul următoarei secvențe de cod:
' put the color in Global Q Report
status = Cells(i, 7).Value ' memorize the status of the Algo project
projectname = Worksheets("Header page").Range("A14").Value ' memorize the project name
Workbooks(numewkb).Activate ' Activate Global Q Report
Worksheets("Global Q Report Algo").Select
icolumn = Rows(3).Find(MonthName(Month(datalist))).Column ' memorize the column of the chosen reporting month
irow = Columns("DJ").Find(projectname, MatchCase:=False).Row ' memorize the row where the project is found
Cells(irow, icolumn) = status ' Put the status in Global Q Report
Următorul pas este să testăm dacă starea este RED, caz în care vom copia deviațiile care au făcut ca aceasta stare să fie RED, deviații marcate cu un „r” pe coloana P.
Pentru acest lucru vom stabili că numărul maxim de deviații este 10, și vom copia pe rând fiecare deviația, pe linia proiectului, în câte o celulă Excel, începând de la coloana DN.
Pentru a le concatena pe toate că apoi să le putem copia în celula corespunzătoare pe coloana numită „Motivul de bază al deviației”( Root cause for deviation), pe coloana DM vom folosi o formulă Excel. De exemplu, pentru proiectul de pe linia 4, formula pentru concatenarea deviațiilor de pe coloana DM4 este următoarea: =CONCATENATE (DN4, " ", DO4, " ", DP4, " ", DQ4, " ", DR4, " ", DS4, " ", DT4, " ", DU4, " ", DV4, " ", DW4).
Secvența de cod care testează dacă statusul este RED este următoarea:
iconcat = 118 ' Column DN
Workbooks(WkbSS).Activate
Worksheets("AlgoQ Report").Select
If (UCase(status) = "RED") Then
idevrow = Columns("P").Find("r").Row ' search the first row where r is found
' Search the deviation and save it on irow, column DN++
For a = idevrow To idevrow + 10 ' Max number of deviations = 10
If (Cells(a, 16).Value = "r") Then
' copy the deviation in Global Q
If (Cells(a, 15).Value <> "") Then ' if deviations are found in column O
sIssue = Cells(a, 15).Value ' memorize the deviation
Workbooks(numewkb).Activate ' Activate Global Q Report
Worksheets("Global Q Report Algo").Select
Cells(irow, iconcat) = sIssue & ";" ''' ' memorize the deviation on column DN++:
Else
sIssue = Cells(a, 14).Value 'memorize the deviation
Workbooks(numewkb).Activate ' Activate Global Q Report
Worksheets("Global Q Report Algo").Select
Cells(irow, iconcat) = sIssue & ";" ''' ' memorize on column DN++: "deviation" & ;
End If
End If
iconcat = iconcat + 1
Next a
' Copy the deviations
Workbooks(numewkb).Activate
Worksheets("Global Q Report Algo").Cells(irow, 117).Copy ' cell 117 contains all deviations
Worksheets("Global Q Report Algo").Cells(irow, icolumn + 8).PasteSpecial xlPasteValues
End If ' from "if status=red"
Variabila „iconcat” care a fost inițializată cu 118, o vom folosi cum spuneam și anterior pentru a copia deviațiile în câte o celulă și se va incrementa cu 1 cu fiecare deviație găsită.
Variabila „idevrow” de tip Integer va fi inițializata cu număr primei linii de pe coloana P pe care se găsește „r”, după care va fi incrementata cu câte un 1, pentru a parcurge cele 10 linii corespunzătoare numărului maxim de deviații posibil existente.
Observatie: Sunt două structuri If… Then deoarece deviația se poate găsi pe coloana O (15) sau pe coloana N (14) datorită existenței unor versiuni mai vechi ale fișierului Status Sheet.
După ce au fost parcurse toate cele 10 linii cu deviații posibile, pe coloana DM există deja formula de concatenare aplicată și tot ceea ce trebuie să mai facem este să copiem valorile pe coloana „Motivul de bază al deviației”( Root cause for deviation), cu linia corespunzătoare fiecărui proiect.
Dacă în această căutare pe coloanele G și H nu vor fi găsite informații, se va căuta pe coloanele L și M, însemnând că proiectul este de Calibrare. Pe același principiu ca și mai sus, se va reține statusul și se va copia corespunzător, iar dacă statusul este RED, deviațiile se vor reține și se vor copia.
Dacă de la începutul testării nu se va îndeplini condiția prezentată în Fig.11.6., se va testa dacă proiectul este de SW și dacă data coincide, că în figură de mai jos:
Fig.11.7. Testarea tipului proiectului si a datei
Observatie: Este necesar să testăm dacă proiectul este de SW, chiar dacă am văzut că nu e de tip Algo, datorită neconcordantei între versiunile fisierelor Status Sheet vechi, care nu aveau această informație la aceeași locație ca și fisierele Status Sheet noi.
În același mod ca și cel descris pentru proiectele de Algo, dacă data nu corespunde se va pune „-” pentru proiectul al cărui fișier Status Sheet este deschis:
Else
' the dates are not the same
Workbooks(WkbSS).Activate
If (Worksheets("Header page").Range("A14").Value <> "") Then
projectname = Worksheets("Header page").Range("A14").Value ' memorize the project name
Else
projectname = Worksheets("Header page").Range("A13").Value ' memorize the project name
End If
Workbooks(numewkb).Activate ' Activate Global Q Report
Worksheets("GlobalQ Report SW").Select
Cells(Columns("DI").Find(projectname, LookAt:=xlWhole, MatchCase:=False).Row, Rows(3).Find(reportmonth).Column) = "'-"
Workbooks(WkbSS).Activate
End If
În plus vom mai adăuga două secvențe de cod și anume:
ActiveWorkbook. Close SaveChanges: =False: Vom adăuga această secvență la sfârșitul codului, în interiorul secvenței Do While… Loop, pentru a nu mai apărea fereastra prin intermediul căreia trebuie să alegem dacă salvăm modificările sau nu.
Două secvențe care reduc viteza de rulare a codului prin prevenirea reîmprospătării ecranului, și anume pentru partea de început a funcției:
' Prevents screen refreshing.
Application. ScreenUpdating = False
Și pentru partea de sfârșit a funcției:
' Enables screen refreshing.
Application.ScreenUpdating = True
Prezentarea rezultatelor
Rezultatul final, în urma creării aplicației, este că după accesarea butonului „Actualizează situația”, va apărea fereastra „Selectează dată” („Select the date”) ca în figura de mai jos, iar după selectarea lunii pentru care se dorește raportarea și după apăsarea butonului „Submit”, situația proiectelor va fi copiată în fișierul „Raport Global al Calității” și rezultatul va arăta ca în Fig. 13.1 și Fig. 13.2.
Fig.12. Fereastra „Selecteaza data”
Fig.13.1. Situația proiectelor de tip SW
Fig.13.2. Situația proiectelor de tip Algo
Concluzii
În concluzie, partea de Visual Basic pentru Aplicații a Excel-ului este unul dintre motivele pentru care Excel este una din cele mai puternice aplicații folosite în ziua de astăzi, în special în firme și în plus, poate interacționa și cu alte aplicații folosite de acestea precum Access, Word, Power Point.
Deși limbajele de programare alternative, ca C++ spre exemplu, oferă programatorului mai mult control asupra felului în care procesele au loc, Visual Basic pentru Aplicații este mult mai atrăgător din punct de vedere al procesului de dezvoltare care este simplist și este ideal pentru optimizarea proceselor care au loc în cadrul unei firme.
Importanta raportarii
Impact, masuri, escalare, asigurarea calitatii
Directii de dezvoltare
Prelucrare statistica, interpretare
Bibliografie
Visual Basic 2012 Programmer’s Reference (Referințele programatorului pentru Visual Basic 2012) – Rod Stephens, Editura John Wiley & Sons, 2012
Excel VBA Programming for Dummies-3rd Edition (Programarea în Excel VBA pentru începători) – John Walkenbach, Editura John Wiley & Sons, 2013
http://www.haresoftware.com/ExcelHistory.htm – Istoria Aplicației Excel;
http://www.encyclopedia.com/topic/Visual_Basic.aspx – Visual Basic – Articol scris de Stephen Hughes;
http://www.excelfunctions.net/Excel-VBA-Tutorial.html – Tutorial VBA Excel.
Bibliografie
Visual Basic 2012 Programmer’s Reference (Referințele programatorului pentru Visual Basic 2012) – Rod Stephens, Editura John Wiley & Sons, 2012
Excel VBA Programming for Dummies-3rd Edition (Programarea în Excel VBA pentru începători) – John Walkenbach, Editura John Wiley & Sons, 2013
http://www.haresoftware.com/ExcelHistory.htm – Istoria Aplicației Excel;
http://www.encyclopedia.com/topic/Visual_Basic.aspx – Visual Basic – Articol scris de Stephen Hughes;
http://www.excelfunctions.net/Excel-VBA-Tutorial.html – Tutorial VBA Excel.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Realizarea Unei Aplicatii Suport Pentru Managementul Calitatii Proiectelor de Dezvoltare Software din Industria Auto (ID: 150331)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
