Office中国论坛/Access中国论坛

标题: 子窗体记录导出成EXICL代码如何写? [打印本页]

作者: 付谦    时间: 2011-6-12 21:07
标题: 子窗体记录导出成EXICL代码如何写?
我建立了一个查询,条件其姓名=子窗体中的姓名,然后导出成EXICL,结果只能导出一条记录,我想导出与子窗体中的姓名相同的所有记录,如何作?(子窗体的记录是变动的,不能以数据源建联合查询)
作者: jintanhongjian    时间: 2011-6-12 22:19
不明白,最好有示例附件。
作者: xie62    时间: 2011-6-13 14:18
可将子窗体内容或查询内容导出。你试一试?
Private Sub Label8_Click() '导出至EXCEL
On Error GoTo Err_Label8_Click
  Me![出入箱光缆子窗体].SetFocus    '把焦点移动子窗体上
    DoCmd.RunCommand acCmdSelectAllRecords
    DoCmd.RunCommand acCmdCopy
    Dim obj As Object
    Set obj = CreateObject("Excel.Application")
    obj.Workbooks.Add
    obj.Visible = True
    SendKeys "^v"
Exit_Label8_Click:
    Exit Sub
Err_Label8_Click:
    MsgBox Err.Description
    Resume Exit_Label8_Click
End Sub
作者: 付谦    时间: 2011-6-14 11:30
回复 xie62 的帖子

谢谢3楼,能否有只导出子窗体的一个字段(如姓名)和把子窗体记录生成一个ACCESS表的语句.因在实际工作中,如能生成一个ACCESS表,就可与其他表建立联合查询,这样扩大了使用面
作者: sunjie87    时间: 2011-6-14 16:55
回复 xie62 的帖子

留着备用,谢谢!
作者: todaynew    时间: 2011-6-14 20:28
本帖最后由 todaynew 于 2011-6-14 20:29 编辑
付谦 发表于 2011-6-12 21:07
我建立了一个查询,条件其姓名=子窗体中的姓名,然后导出成EXICL,结果只能导出一条记录,我想导出与子窗体中的 ...


1、写两个自定义函数如下:
Public Function AccToExl(frm As Form)
'示例:AccToExl(me.子窗体.form)
Dim ssql As String
Dim strwh As String
ssql = frm.RecordSource
ssql = Trim(ssql)
If Right(ssql, 1) = ";" Then
    ssql = Left(ssql, Len(ssql) - 1)
End If
ssql = "select * from (" & ssql & ") where "
strwh = "True"
If frm.Filter <> "" Then
    strwh = strwh & " and " & frm.Filter
End If
ssql = ssql & strwh
CrtQDef "TempQ", ssql
DoCmd.OutputTo acOutputQuery, "TempQ", acFormatXLS
DoCmd.DeleteObject acQuery, "TempQ"
End Function

Public Function CrtQDef(strname As String, strsql As String)
'创建查询
Dim Qdef As QueryDef
Set Qdef = CurrentDb.CreateQueryDef(strname)
Qdef.SQL = strsql
Qdef.Close
Set Qdef = Nothing
End Function

2、在主窗体的导入按钮单击事件中写:
call  AccToExl(me.子窗体.form)






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3