Access VB экспортирует определенный запрос в указанный путь к файлу - PullRequest
0 голосов
/ 06 июля 2019

Итак, у меня есть запрос с именем "the query I wish to export", я хочу иметь возможность экспортировать запрос в Excel, когда нажимаю кнопку в моей форме.

Я создал эту функцию в Module1, чтобы вызвать диалог и определить путь к файлу, в который я хочу сохранить результат запроса.

Public Function ExportToExcel(strQuery As String)

    On Error GoTo Err_Handler

    Const MESSAGETEXT = "Overwrite existing file?"
    Dim OpenDlg As New BrowseForFileClass
    Dim strPath As String

    OpenDlg.DialogTitle = "Enter or Select File"
    strPath = OpenDlg.GetFileSpec
    Set OpenDlg = Nothing

    If strPath <> "" Then
        If Dir(strPath) <> "" Then
            If MsgBox(MESSAGETEXT, vbQuestion + vbYesNo, "Confirm") = vbNo Then
                Exit Function
            Else
                Kill strPath
            End If
        End If
    Else
        Exit Function
    End If

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, strQuery, strPath

Exit_Here:
    Exit Sub

Err_Handler:
    MsgBox Err.Description
    Resume Exit_Here

End Function

После завершения этой функции я вызываю эту функциюФункция и желание экспортировать мой запрос в путь к файлу, который я хочу выбрать.

Private Sub Export1_Click()

    Call Module1.ExportToExcel "the query I wish to export"

End Sub

Он просто дает мне "Синтаксическая ошибка" .Я не очень понимаю, потому что я специально вызываю функцию, передавая имя запроса в качестве аргумента, есть идеи?

1 Ответ

1 голос
/ 06 июля 2019

Поскольку вы оцениваете функцию с помощью ключевого слова Call (что не является строго обязательным), аргументы должны быть заключены в круглые скобки, т. Е .:

Call Module1.ExportToExcel("the query I wish to export")

Для выбора / спецификации файла я бы предложил использовать объект FileDialog , для которого потребуется ссылка на Microsoft Office ##.0 Object Library.

Чтобы дать пример того, как это можно реализовать, ниже приведена быстрая функция, демонстрирующая, как вы можете предлагать пользователю указать / выбрать файл Excel:

Function GetExcelFile(msg As String) As String
    Dim dia As FileDialog
    Set dia = Application.FileDialog(msoFileDialogFilePicker)
    With dia
        .AllowMultiSelect = False
        .Title = msg
        .Filters.Clear
        .Filters.Add "Excel Files", "*.xls; *.xlsx"
        If .show Then
            GetExcelFile = .SelectedItems.Item(1)
        End If
    End With
End Function

Вызовите выше с нужным заголовком диалога, например ::

GetExcelFile "Enter or Select File"

Выше будет возвращаться пустая строка, если пользователь нажимает Отмена при появлении запроса.

...