Option Explicit
'Чтение mdb на VBA
Sub ReadMDB()
'переменная хранящая результат запроса
Dim tbl As Recordset
'строка запроса SQL
Dim SQLr As String
'переменная хранящая ссылку на подключенную БД
Dim dbs As Database
'подключаемся к mdb
Set dbs = DAO.OpenDatabase(ThisWorkbook.Path & "\price.mdb")
'составляем строку SQL запроса
SQLr = "SELECT * FROM tbl_прайс"
'отправляем запрос открытой БД
'результат в виде таблицы сохранен в tbl
Set tbl = dbs.OpenRecordset(SQLr)
'вставляем результат в лист начиная с ячейки A1
Cells(1, 1).CopyFromRecordset tbl
'Закрываем временную таблицу
tbl.Close
'Очищаем память. Если этого не сделать, то таблица
'так и останется висеть в оперативке.
Set tbl = Nothing
'Закрываем базу
dbs.Close
Set dbs = Nothing
End Sub
Sub ReadMDB_построчно()
Dim tbl As Recordset
Dim SQLr As String
Dim dbs As Database
Dim i As Integer
Set dbs = DAO.OpenDatabase(ThisWorkbook.Path & "\price.mdb")
SQLr = "SELECT * FROM tbl_прайс"
Set tbl = dbs.OpenRecordset(SQLr)
i = 1
'выполняем цикл пока не конец tbl
Do While Not tbl.EOF
'присваиваем каждой ячейке значение из полей таблицы
Cells(i, 1) = tbl.Fields("ID")
Cells(i, 2) = tbl.Fields("Вид")
Cells(i, 3) = tbl.Fields("Производитель")
Cells(i, 4) = tbl.Fields("Модель")
Cells(i, 5) = tbl.Fields("Количество")
Cells(i, 6) = tbl.Fields("Цена")
'и получим сумму (цена*кол-во)
Cells(i, 7) = tbl.Fields("Количество") * tbl.Fields("Цена")
i = i + 1
tbl.MoveNext 'переход к следующей записи
Loop
tbl.Close
Set tbl = Nothing
dbs.Close
Set dbs = Nothing
End Sub
Sub ReadMDB_добавить_запись()
Dim tbl As Recordset
Dim SQLr As String
Dim dbs As Database
Dim kol As Long
Set dbs = DAO.OpenDatabase("E:\price.mdb")
Set tbl = dbs.OpenRecordset("tbl_прайс")
'метод RecordCount позволяет получить кол-во записей
'Kol хранит ID для новой записи
kol = tbl.RecordCount + 1
SQLr = "INSERT INTO tbl_прайс (ID,Вид,Производитель, Модель,Количество, Цена)" _
& "Values (" & kol & ",'ОЗУ','Hyndai', 'DDR3', 123, 600)"
dbs.Execute SQLr
tbl.Close
Set tbl = Nothing
dbs.Close
Set dbs = Nothing
End Sub