MS Access & Excel: превращение запроса с динамическими параметрами во что-то полезное - PullRequest
0 голосов
/ 13 февраля 2010

Я застрял в проблеме ниже, потому что я мало пользуюсь Access или Excel и у меня есть некоторый базовый язык программирования. Итак, вот сделка:

Я только что сделал довольно простую базу данных в MS Access (2007) с хорошим запросом для получения данных, в зависимости от того, какие параметры вы передаете. В Excel (2007) у меня есть этот большой «шаблон», в котором в основном есть параметры для запроса. Эти параметры изменяются для каждого столбца и строки!

Возможно, излишне, например

column A contains paramA (10 different options)
column B contains paramB (8 different options)
column C contains paramC (2 different options)

Я хотел бы заполнить этот шаблон динамическими данными из Access, учитывая постоянно меняющиеся параметры. например, * +1008 *

column D contains Query (ParamA, ParamB, ParamC)

Лучший способ сделать это, я думаю, - создать (встроенную?) Функцию, которая извлекает результаты запроса, а также передает параметры в зависимости от относительной позиции ячейки. И эта функция затем копируется как обычная встроенная функция Excel (например: SUM () ).

Я просто не знаю, как вызвать / выполнить запрос MS Access из функции макроса Excel.

Может ли кто-нибудь помочь мне с этим? Заранее большое спасибо!

Ответы [ 2 ]

0 голосов
/ 14 февраля 2010

Чтобы добавить к ответу Рему также см. Модули: образец Excel Automation - ячейка за ячейкой, которая медленно и Модули: перенос записей в Excel с помощью автоматизации

Позднее связывание означает, что вы можете безопасно удалить ссылку и иметь ошибку только тогда, когда приложение выполняет соответствующие строки кода. Вместо того, чтобы делать ошибки при запуске приложения и вообще не допускать пользователей в приложение. Или при нажатии на среднюю, левую или триммерную функцию.

Это также очень полезно, если вы не знаете, какая версия внешнего приложения будет находиться в целевой системе. Или если ваша организация находится в процессе перехода от одной версии к другой.

Для получения дополнительной информации, включая дополнительный текст и некоторые подробные ссылки, см. Страницу «Позднее связывание в Microsoft Access»

0 голосов
/ 13 февраля 2010

Несколько заметок.

Dim cn As Object
Dim rs As Object

''See: http://www.connectionstrings.com/access

strFile = "C:\Docs\AccessDB.mdb"
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";User Id=admin;Password=;"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

strSQL = "SELECT SomeField, OtherField FROM SomeTable " _
  & "WHERE SomeText='" & Range("A1") & "'"
rs.Open strSQL, cn

s = rs.GetString
MsgBox s

'' Or
Sheets("Sheet2").Cells(2, 1).CopyFromRecordset rs
...