Голос тихий таинственный Где ты милый единственный Алсу.
Итак, нам нужно связывать Excel и Access. Где находится Excel мы знаем, а вот где файл MDB нужно знать и указывать. Но этих проблем можно избежать, если применить такой ход. Если mdb будет в том же каталоге, что и XLS, то можно создать функцию, которая будет получать этот путь.
Итак мы её поместим в отдельный модуль для этого его еще нужно создать. А вот код.
Function stDBGetPath() As String Dim stTemp As String ' взять путь нахождения активной книги stTemp = ActiveWorkbook.Path ' прибавить имя базы данных stDBGetPath = stTemp + "\" + "curs.mdb" End Function
Вот теперь можно открывать базу данных используя объекты DAO. Вот код:
Private Sub CommandButton1_Click() '---------- объявление переменных ------ ' переменная типа базы данных Dim dbAccess As Database ' переменная типа набор записей Dim reRecordSet As Recordset ' здесь будет SQL запрос Dim stSQL As String ' переменная типа даты Dim daDate As Date ' а вдруг ошибка On Error GoTo ErrorsDB ' ---------- получаем данные из ячейки daDate = Range("DATES").Value ' ---------- работа с базой ------------ ' откроем базу данных Set dbAccess = OpenDatabase(stDBGetPath) ' Строим SQL запрос stSQL = "SELECT * FROM[Curs] WHERE[Поле1] =""" & daDate & """" ' получаем набор значений Set reRecordSet = dbAccess.OpenRecordset(stSQL) ' если данные получены тогда занести в ячейку If (reRecordSet.RecordCount > 0) Then ' поместить значение в ячейку Range("KURS").Value = reRecordSet!Поле3 Else MsgBox "Not Found" End If ' закрываем набор записей reRecordSet.Close ' закрываем базу данных dbAccess.Close ' все в норме конец GoTo Ends ' ошибка где-то однако ErrorsDB: MsgBox "Произошла ошибка" Ends: End Sub
Поле с датой в файле Curs.mdb нужно перевести в текстовый формат. Теперь испытания. Введите дату и цену в $ и нажмите кнопку рядом с датой. Если дата есть, то курс поменяется, иначе получите сообщение, что нет данных Not Found. Поменяйте дату и опять нажмите кнопку. Все пересчитается. Вот пример работы: