У меня есть база данных Access со всеми нашими частями. Я делаю надстройку Excel для пользователей. Они могут запросить часть, выполнив следующие действия (в любом первенствует клетки):База данных запросов Access-Access Excel
=MUN("VOLTAGE",A3)
Эта функция запрашивает доступ к базе данных и найти значение напряжения, которое соответствует значению PARTNO (в данном случае значение PARTNO находится в Ячейка «A3» файла Excel пользователя).
Когда я начал создавать надстройку, я тестировал все исключительно в Excel (моя база данных была в Excel), и вскоре я понял, что это было глупо.
Вот мой VBA вот ИСКЛЮЧИТЕЛЬНО В EXCEL:
Function MUN(what, partNo)
Dim ws As Worksheet, aCell As Range, pos As String, tablex As String, LastColumn As Integer, LastRow As Long, LastCell As Range, LastC As String, LastR As Integer
p = "P:\Engineering\Programs"
f = "partsDB.xls"
s = "Sheet1"
path = "'" & p & "[" & f & "]" & s & "'!"
Set ws = ActiveWorkbook.Sheets("table")
'DETERMINES THE LAST COLUMN AND ROW USED IN THE WORKSHEET (THIS WILL HELP DETERMINE THE TABLE FOR VLOOKUP)
LastRow = Cells.Find(what:="*", after:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = Cells.Find(what:="*", after:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
LastC = Replace(Cells(1, LastColumn).Address(False, False), "1", "")
LastR = Cells(Rows.Count, "a").End(xlUp).Row
'DETERMINES THE COLUMN POSITION OF THE "WHAT"
Set aCell = ws.Rows(1).Find(what:=UCase(what), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
pos = aCell.Column
'SETS THE TABLE
tablex = "A$1:" & LastC & "$" & LastR
MUN = Application.WorksheetFunction.VLookup(partNo, Range(tablex), pos, False)
End Function
я наткнулся на еще один вопрос. Мне нужно сделать VLOOKUP с несколькими аргументами. Мне нужно сделать VLOOKUP, где XX = «XXX» и YY = «YYY», а затем вернуть «ZZZ».
Поскольку MS Access может использовать SQL-запросы, как подключиться к базе данных Access и выполнять запрос, который будет реплицировать то, что находится в функции выше, а также сделать VLOOKUP с несколькими аргументами?
Незначительная проблема с этим планом. Доступ - это клиентская база данных, а не база данных сервера. Excel также является клиентским программным обеспечением. Поэтому, даже если вы написали замечательный код, вероятно, будут проблемы с подключением. –
Я заметил, что люди могут обращаться к внешним файлам Excel, даже не открывая их, как бы это было иначе? – bagofmilk