Я назначаю запрос Access 2007 объекту QueryDef в Excel VBA. Мой запрос вызывает пользовательскую функцию, потому что он выполняет вычисление результатов оценки поля с помощью регулярного выражения. Я использую QueryDef, потому что я собираю значения в UserForm и хочу передать их запросу в качестве параметров.
Когда я запускаю свой код VBA, я получаю сообщение об ошибке: «Ошибка выполнения '3085': неопределенная функция 'regexFunc' в выражении».
Этот вопрос предполагает, что проблема в том, что DAO не может вызывать UDF Access из Excel, поэтому я скопировал свой UDF в модуль Excel VBA, но все равно получаю сообщение об ошибке.
Запрос доступа:
select field1 from dataTable where regexFunc(field1)=[regexVal]
Вот код Excel VBA:
'QueryDef function
Sub makeQueryDef (str As String)
Dim qdf As QueryDef
Dim db As Database
Set db = OpenDatabase(DBpath)
Set qdf = db.QueryDefs("paramQuery")
qdf.Parameters("regexVal") = (str="test")
doSomething qdf
End Sub
'Regex function copied from Access VBA module to Excel VBA module
Function regexFunc(str As String) As Boolean
Dim re As RegExp
Dim matches As MatchCollection
regexFunc = False
Set re = New RegExp
re.Pattern = "\reg[ex](pattern)?"
Set matches = re.Execute(str)
If matches.Count <> 0 Then
regexFunc = True
End If
End Function
qdf.openrecordset
) и заполнить этот столбец значениями, рассчитанными с использованием версии UDF для Excel VBA. Это лучший способ или есть более простой способ получить то, что мне нужно? РЕДАКТИРОВАТЬ: спасибо за ссылку. - person sigil   schedule 18.08.2011