Sunteți pe pagina 1din 3

Universitatea Tehnică a Moldovei

Facultatea Calculatorare, Informatică şi Microelectronică


Departamentul Informatica si Ingineria Sistemelor

Lucrare de laborator nr.6


Programarea procedurală
Tema: Prelucrarea foilor Excel în VBA
(Visual Basic for Applications)

A efectuat: st.grupa IA-182 Atamanenco Ion

A controlat: lect.univ Rodica Braniște

Chișinău, 2019
Tema: Export de date din Access în Excel
Sarcina lucrării:
Sa presupune ca intr-un magazin de telefoane se efectueaza un control asupra vanzarii telefoanelor
mobile, cu ajutorul tabelului „TelShop” din baza de date TelShop. Din aceasta tabela se afla urmatoarele
campuri importante:
 NrCod – identificatorul produsului;
 Denumire Telefoane – denumirea telefonului;
 Pretul – preţul telefonului;
 In Vanzare – cantitatea de telefoane in vanzare;
 Total Vandute – cantitatea totala de telefoane vandute timp de un an.
 Oprite in Vanzare – cantitatea de telefoane ce au avut defect si au fost oprite din vanzare.
 Reintoarcere uregenta – cantitatea de telefoane ce au fost reintoarse urgent din cauza unui defect.
Etapele de elaborare:
1. Crearea unui fişier Excel, adaugarea pe această pagină a unui buton „Extragere din Access”
2. Deschiderea editorului de cod VBE şi în meniul Tools alegerea Reference, găsirea şi setarea opţiunii
Microsoft ActiveX Data Objects 2.1 Library.
3. Deschiderea editorului de cod VBE și crearea unu modul nou
4. Atribuirea subrutinei create butonului de pe foaia Excel.

Listingul programului:
Public Sub ObtineDateDinAcces_Click()
Cells.Select
Selection.Clear
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=C:\Users\Ion\Desktop\Uni\PP\Lab6\LaptopStore.accdb"
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=C:\Users\Ion\Desktop\Uni\PP\Lab6\LaptopStore.accdb"
Dim cmdCommand As New ADODB.Command
With cmdCommand
.ActiveConnection = cn
.CommandText = "SELECT * FROM LaptopStore;"
End With

Dim rs As New ADODB.Recordset


With rs
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Open cmdCommand
End With
Dim QT1 As QueryTable
Set QT1 = ActiveSheet.QueryTables.Add(rs, Range("A4"))
QT1.Refresh
Dim nRowCount As Integer
Dim oRange As Range
Set oRange = QT1.ResultRange
nRowCount = oRange.Rows.Count
Range("G4").Value = "Reantoarcere urgenta"
Range("G4").Font.Bold = True
Range("G4").Columns.AutoFit
Range("H4").Font.Bold = True
Range("H4").Columns.AutoFit
Set oRange = Range("G5", "G" & nRowCount + 3)
Dim oCell As Range
Dim sRowNumber As String
Dim cMoney As Currency
Dim cItogMoney As Currency
Dim cItogSklad As Currency
For Each oCell In oRange.Cells
sRowNumber = Replace(oCell.Address(True), "$G$", "")
If Range("E" & sRowNumber).Value > Range("D" & sRowNumber) And _
Range("F" & sRowNumber).Value = False Then
oCell.Value = (CInt(Range("E" & sRowNumber).Value) - _
CInt(Range("D" & sRowNumber).Value))
End If
Next
End Sub

Rezultatul obținut:
Excel:

Access:

Concluzii:
În urma acestei lucrări de laborator mi-am format deprinderi de lucrare cu baze de date Acces. Am
aflat cum ar putea să fie făcută legătura între Acces și VBA pentru a transfera unele tabele de date dintr-o
aplicație în alta păstrând forma și conținutul. Această experiență cu sigur îmi va fi de folos în viitor.

S-ar putea să vă placă și