将Requeried子窗体导出到Excel中

时间:2016-03-04 16:59:08

标签: sql vba ms-access export-to-excel

我有一个名为 subform_View_Search 的子表单,我根据某些用户的偏好重新查询它(例如过滤或查找特定项目的最新日期)。

现在,我想将此修改后的子窗体导出到用户首选位置。我有以下代码,但我不确定我是否在正确的轨道和这段代码 似乎不起作用;〜(

Private Sub Command_Excel_Inst_Click()
Dim Path As String

Path = CurrentProject.Path & "\" & "TempQueryName" & ".xls"

subform_View_Search.Form.RecordSource = SQL
subform_View_Search.Form.Requery

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "subform_View_Search", Path

End Sub

我们将非常感谢您的帮助!

这个问题与其他问题不同,因为我是从SQL而不是从查询创建excel文件。

这是我的第二次尝试。 这是创建临时查询的代码,但有2个问题。 1.它给出了运行时错误3066 2.我的代码似乎无法删除旧的临时查询

Dim db As Database
Dim Qdf As QueryDef

Dim strQry As String
Dim strSQL As String
Dim Path As String

Path = CurrentProject.Path & "\" & "TempQueryName" & ".xls"

strSQL = SQL '<-From public
strQry = "TempQueryName"

Set db = CurrentDb
Set Qdf = db.CreateQueryDef(strQry, strSQL)

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strQry, Path

DoCmd.DeleteObject acQuery, strQry

1 个答案:

答案 0 :(得分:2)

你可以尝试下面这样的东西,不是你想要的那么简单,但首先要看看我会尝试的东西。我会继续看。

Dim f As Form
Dim x As Excel.Application

Set f = Me.Child0.Form

Set x = New Excel.Application
x.Visible = 1
x.Workbooks.Add
x.Worksheets(1).Range("a1").CopyFromRecordset f.Recordset

x.ActiveWorkbook.SaveAs "filename"
x.ActiveWorkbook.Close False

Set f = Nothing
Set x = Nothing

或者使用相同的SQL创建临时查询,然后将其导出,然后将其删除。不确定是什么允许的。