2013-10-24 5 views
0

У меня есть база данных 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 с несколькими аргументами?

+0

Незначительная проблема с этим планом. Доступ - это клиентская база данных, а не база данных сервера. Excel также является клиентским программным обеспечением. Поэтому, даже если вы написали замечательный код, вероятно, будут проблемы с подключением. –

+0

Я заметил, что люди могут обращаться к внешним файлам Excel, даже не открывая их, как бы это было иначе? – bagofmilk

ответ

0

в VBA сделать что-то вроде этого:

dim accdb as object 
set accdb = CreateObject("Access.Application") 
accdb.Open "your access database path" 

Примечание: Ваш доступ к базе данных должны быть где-то, где каждый может получить доступ к этому

то я думаю (я не имею никакого опыта делает это от excel - я использую excel от доступа) - вам нужно создать экземпляр, как объект db, для использования текущей базы данных и выполнить оператор sql, используя этот объект db, чтобы получить обратно нужные данные.

Извините, это не полный ответ, но вам может быть достаточно для начала.

Смежные вопросы