因此,我有一个名为"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
它一直在给我“语法错误” 。我不太了解,因为我专门调用该函数,将查询名称作为其参数传递,有什么想法吗?
答案 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"
如果用户在出现提示时按“取消”,则以上内容将返回一个空字符串。