Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 使用VBA和宏将使用文件对话框的查询从Access导出到一个excel工作簿中_Ms Access_Vba_Spreadsheet_Export To Excel_Savefiledialog - Fatal编程技术网

Ms access 使用VBA和宏将使用文件对话框的查询从Access导出到一个excel工作簿中

Ms access 使用VBA和宏将使用文件对话框的查询从Access导出到一个excel工作簿中,ms-access,vba,spreadsheet,export-to-excel,savefiledialog,Ms Access,Vba,Spreadsheet,Export To Excel,Savefiledialog,我有两个问题。我希望将这两个查询添加到一个Excel(xlsx)文件中,但放在两个不同的工作表上,每个查询一个。 这可以通过硬编码路径实现: Public Function Export2Queries() DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "SaneringsVurdering", "C:\Users\JGJ\Desktop\Sanering.xls", True DoCmd.TransferSpreads

我有两个问题。我希望将这两个查询添加到一个Excel(xlsx)文件中,但放在两个不同的工作表上,每个查询一个。 这可以通过硬编码路径实现:

Public Function Export2Queries()
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "SaneringsVurdering", "C:\Users\JGJ\Desktop\Sanering.xls", True
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "K_SaneringLedMet", "C:\Users\JGJ\Desktop\Sanering.xls", True
End Function
现在我想将其与另存为对话框结合起来

Option Compare Database
Public Function FilToSave()

Dim FlDia As FileDialog

Set FlDia = Application.FileDialog(msoFileDialogSaveAs)

With FlDia
    .AllowMultiSelect = False
    .InitialFileName = "C:\"  ' You can set outfile to a full path with a fictitious  or real file name, and the dialog will open in that folder.
    .Title = "Please name the file you want to save"
    If .Show = True Then
        FilName = .SelectedItems(1)


    Else
        MsgBox "No file selected. Process cancelled"
        DoCmd.Hourglass False
        FilToSave = "Cancelled"
        Exit Function
        End If
End With

FilToSave = FilName

End Function
让它与上述解决方案一起工作

Public Function Export2Queries()
Dim savefile As String
savefile = FilToSave
If savefile <> "Cancelled" Then
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "SaneringsVurdering", savefile, True
End If
End Function
公共函数export2querys()
将文件另存为字符串
savefile=filtesave
如果保存文件“已取消”,则
DoCmd.transfer电子表格acExport,acSpreadsheetTypeExcel9,“SANERINGSVURDEING”,保存文件,True
如果结束
端函数

现在,这段代码用于在对话框提示下将查询/表导出到想要的位置

DoCmd.TransferSpreadsheet
是一种简单的方法,无法根据您的要求进行扩展。您必须使用自动化并打开一个Excel实例来操作工作表。我设法创建了一个模块,可以添加工作表1上的第一个查询和工作表2上的第二个查询<代码>公共函数Export2Queries()DoCmd.transferSpreadsheetTypeExcel12XML,acSpreadsheetTypeExcel12Xml,“连接”,“C:\Users\Username\Desktop\ExportTest.xlsx”,True DoCmd.TransferSpreadsheet acExport,acSpreadsheetTypeExcel12Xml,“SaneringTilImport”,“C:\Users\Username\Desktop\ExportTest.xlsx”,真正的结束函数,但最好是提示位置而不是硬代码。但你说这是不可能的?哦,忘了最后一个参数。OpenFileDialog的一个类可以在Karsten Pries找到:第二次和第三次下载应该包括64位访问。如果没有,请给Karsten一个注释。
wbDest
没有在任何地方声明或初始化,因此会出现错误。我认为您应该使用
FilName
作为
DoCmd的参数。TransferSpreadsheet
DoCmd。TransferSpreadsheet
是一种简单的方法,无法扩展到您要求的范围。您必须使用自动化并打开一个Excel实例来操作工作表。我设法创建了一个模块,可以添加工作表1上的第一个查询和工作表2上的第二个查询<代码>公共函数Export2Queries()DoCmd.transferSpreadsheetTypeExcel12XML,acSpreadsheetTypeExcel12Xml,“连接”,“C:\Users\Username\Desktop\ExportTest.xlsx”,True DoCmd.TransferSpreadsheet acExport,acSpreadsheetTypeExcel12Xml,“SaneringTilImport”,“C:\Users\Username\Desktop\ExportTest.xlsx”,真正的结束函数,但最好是提示位置而不是硬代码。但你说这是不可能的?哦,忘了最后一个参数。OpenFileDialog的一个类可以在Karsten Pries找到:第二次和第三次下载应该包括64位访问。如果没有,请给Karsten一个注释。
wbDest
没有在任何地方声明或初始化,因此会出现错误。我建议您应该使用
FilName
作为
DoCmd.TransferSpreadsheet
的参数。