Итак, нам необходимо подготовить форму, к которой мы будем обращаться. Конечно это лист Excel. Запустите Excel, создайте файл с именем TestCurs и оставьте на нем один лист. Теперь на этом листе напишем "Цена товара в $" и "Цена товара в РУБ", также отдельно "Курс РУБ за $". Нужна и ячейка "Дата". И дадим имена ячейкам.
Цена в рублях RUB
Цена в $ BAKS
Курс KURS
Дата DATES
Теперь дело за формулами. Идея ясна как белый день. Стоимость руб = Стоимость в $ * курс. Вот это и запрограммируем:
Вводить мы будем цену в долларах, выбирать дату и видеть цену в рублях. Цену в долларах ввести не тяжело:-))). Все остальное посчитается, если будет курс. Курс привязан к дате. То есть мы должны.
Ввести дату
Получить курс
А дальше вводить цену в долларах
Вот теперь надо все подготовить для ввода даты. Надо задать, что это ячейка даты. Выделите её пойдите в "Формат", дальше "Ячейки", потом установите тип ячейки "Дата".
После того как введена дата нужно будет получить курс. Для этого поместим кнопку на лист. Нам нужно в меню "Вид -> Панели инструментов -> Элементы управления" выбрать кнопку и поместить её рядом с датой. Нажимая на неё мы будем получать курс.
Двойной щелчок создаст макрос. Вот и все на этот шаг. Все готово к программированию. Эта книга есть в проекте, если у Вас что-то неполучилось
Шаг 44 – Считаем
Голос тихий таинственный
Где ты милый единственный
Алсу.
Итак, нам нужно связывать 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. Поменяйте дату и опять нажмите кнопку. Все пересчитается. Вот пример работы: