Использование определенного пользователем параметра в VBA - PullRequest
2 голосов
/ 10 декабря 2008

У меня есть база данных доступа, которая отправляет запрос в файл Excel. Запрос использует для запуска параметр даты. Этот параметр выбирается пользователем. Я хотел бы использовать параметр в имени файла экспорта. Как я могу сделать это с минимальным количеством кода.

01 01 09

Хорошо, новый год начался. извините за задержку, но я был в отпуске.

подробности.

У меня есть база данных доступа, которая выводит отчет в формате Excel, отчет зависит от параметра даты, выбранного пользователем. Этот параметр выбирается через текстовое поле (text100), в котором есть всплывающий календарь. Я хотел бы использовать дату в текстовом поле (text100) в имени файла.

Ответы [ 2 ]

2 голосов
/ 10 декабря 2008

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

Нужно просто добавить пару модулей / функций в модуль:

Some Module

Dim vParam1 as variant
Dim vParam1 as variant

Public Sub ParameterSet(byval pParamName as String, byval pParamValue as variant)

Select Case pParamName 
  Case "Param1": vParam1 = pParamValue 
  Case "Param2": vParam2 = pParamValue 
  Case Else
    msgbox pParamName & " parameter not defined"
End Select

End Sub

Public Function ParameterGet(byval pParamName as String) as variant

Select Case pParamName 
  Case "Param1": ParamGet = vParam1 
  Case "Param2": ParamGet = vParam2 
  Case Else
    msgbox pParamName & " parameter not defined"
End Select

End Sub

Тогда в вашем запросе (удалите параметр даты)

WHERE Field1 = ParameterGet("Param1")

Затем в вашем коде, где вы запускаете экспорт

Private Sub Export_Click()

  dim vParam1 as variant

  vParam1 = inputbox("Enter the parameter:")

  ParameterSet "param1", vParam1

  Transferspreadsheet blah, blah, FileName:= vParam1 & ".xls"

End Sub

Очевидно, этот код нуждается в небольшой настройке для компиляции ...: -)

1 голос
/ 17 декабря 2008

Для меня очевидно, что вы хотите проанализировать дату из имени файла, а затем использовать эту дату для выполнения запроса ... если это не то, что вам нужно, пожалуйста, переформулируйте вопрос.

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

Менее очевидная часть - это анализ. Вам необходимо определить формат имени файла. Это:

  • "OutData-YYYYMMDD"
  • "OUTDATA _YY _MM _DD"
  • "DD _MM _YYY _OUTDATA"
  • или что-то еще?

Нам нужно знать относительное положение токенов (год, месяц, день и обычное имя файла).

Предполагая, что "ГГГГ_ ММ_ ДД_ OUTDATA.DAT", вот мысль ...

function toQueryDate(aFileName as String) as Date
Dim theQueryDate as Date
Dim theParsedDate as String

theParsedDate=Mid(aFileName,1,4)+"/"+Mid(aFileName,6,2)+"/"+Mid(aFileName,9,2)
'IMPROVE:there's no error checking here.... we could see if the individual tokens are numbers

On Error Resume Next
theQueryDate=Cdate(theParsedDate)
If err.number then
   Msgbox "Bad filename: "+aFilename
   End 'or something else less fatal 
Endif

'we should be OK so:
toQueryDate=theParsedDate
End function
...