Как правильно указывает Уэйн в комментариях, логика, реализованная в следующем операторе if
, присутствующем в вашем коде, перевернута:
'Set intial filename to default if none is chosen
If (FileName <> "") Then
InitialFileName = "export_" & Format(Date, "mmddyyy") & ".csv"
Else
InitialFileName = FileName
End If
Вышеприведенное подразумевает, что правильное имя файла приведет к выводупуть:
Pathtoexport\Export
Вы также должны опустить здесь круглые скобки:
db.QueryDefs.Delete ("tmpExport")
Однако, глядя на более широкую картину, я бы лично избегал создания пути к файлу внутриэта функция и выберет указание полного пути к файлу в качестве аргумента.
Таким образом, функция имеет единственное назначение:
"Экспортировать результат предоставленного SQL в файл с указанным именем файла."
И вам больше не нужно жестко кодировать родительскую папку в функции.
Например, что-то вроде:
Function ExportQuery(sql As String, fnm As String)
Dim qry As String: qry = "tmpExport"
Dim dbs As DAO.Database
Set dbs = CurrentDb
On Error Resume Next
dbs.QueryDefs.Delete qry
On Error GoTo 0
dbs.CreateQueryDef qry, sql
DoCmd.TransferText acExportDelim, , qry, fnm, False
dbs.QueryDefs.Delete qry
Set dbs = Nothing
End Function