Access VB将某些查询导出到指定的文件路径

时间:2019-07-06 17:00:03

标签: vba ms-access access-vba

因此,我有一个名为"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 个答案:

答案 0 :(得分:1)

由于您使用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"

如果用户在出现提示时按“取消”,则以上内容将返回一个空字符串。