Ms access 使用VBA和宏将使用文件对话框的查询从Access导出到一个excel工作簿中
我有两个问题。我希望将这两个查询添加到一个Excel(xlsx)文件中,但放在两个不同的工作表上,每个查询一个。 这可以通过硬编码路径实现: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
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
的参数。