Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教个导出子窗体记录的方法

子煜  发表于:2015-06-10 09:25:47  
复制

表与窗体为两个库拆分开的,窗体库非链接表,使用DAO加载表记录至子窗体,请问这种情况下,如何导出子窗体记录呢??

貌似用ADO可以实现,但不太清楚方法,请教各位老师方法,谢谢!

 

Top
易勋 发表于:2015-06-10 10:49:14

[示例]ADO新增示例[Access软件网]
http://www.accessoft.com/article-show.asp?id=2905

ADO,DAO两种方法批量更新表中数据[Access软件网]
http://www.accessoft.com/article-show.asp?id=5792

稍微改改就可以了

 

 



子煜 发表于:2015-06-10 11:34:57

这个方法我明白,但是就是不明白如何导出子窗体记录,子窗体很可能是筛选的记录。

如何打开表找到对应子窗体的记录,然后是不是做成变量存储记录,然后导出EXCEL?

这一块比较模糊。。



杜超 发表于:2015-06-10 13:27:46


杜超 发表于:2015-06-10 13:28:35
导出EXCEL
'=========================================================================================
'函数名称: ExportToExcel
'功能描述: 导出数据到Excel
'输入参数: WorkbookName     必需的,工作簿名称
'           FirstRange       必须的,粘贴时定位的单元格(默认为A1单元格)
'返回参数: 无
'使用说明: 由于采用的复制粘贴数据的方法,所以如果要导出子窗体数据,必须先让子窗体获得焦点
'           如果是导出主窗体数据,则主窗体中的焦点控件不能是子窗体,必须先将焦点从子窗体移开
'例子:me.frmchild.setfocus
      ExportToExcel “导出数据”
'作    者: 红尘如烟
'创建日期: 20011-4-1
'=========================================================================================
Function ExportToExcel(WorkbookName As String, Optional FirstRange As String = "A1")
    On Error GoTo Err_ExportToExcel3
    Dim objExcel As Object
    Dim objBook As Object
    Dim strFileName As String
    Dim strExtName As String
    Dim blnHasData As Boolean

    Const xlExcel8 = 56
    Const xlNormal = -4142

    '优先判断当前焦点控件是否子窗体,如果是则复制其中数据
    '其次如果当前不是子窗体或子窗体没有记录源,则再判断当前活动窗体
    If TypeOf Screen.ActiveForm.ActiveControl Is SubForm Then
        If Len(Screen.ActiveForm.ActiveControl.Form.RecordSource) > 0 Then
            blnHasData = True
        End If
    Else
        If Len(Screen.ActiveForm.RecordSource) > 0 Then blnHasData = True
    End If

    If Not blnHasData Then Exit Function

    '根据当前版本取得对应的文件扩展名
    strExtName = ".xls"
    '    If Val(Application.Version) > 11 Then strExtName = ".xlsx"

    '取得另存为文件名
    With Application.FileDialog(2)    'msoFileDialogSaveAs
        .InitialFileName = WorkbookName & strExtName
        If Not .Show Then Exit Function
        strFileName = .SelectedItems(1)
        If Not strFileName Like "*" & strExtName Then
            strFileName = strFileName & strExtName
        End If
        If Len(Dir(strFileName)) > 0 Then Kill strFileName
    End With
    '选择所有记录,然后调用复制命令复制到剪切板
    RunCommand acCmdSelectAllRecords
    RunCommand acCmdCopy
    '发送TAB击键,以取消全选状态
    DoEvents
    SendKeys "{TAB}", True
    '    Me.Toolbar1.SetFocus
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    Set objBook = objExcel.Workbooks().add()
    objBook.Worksheets.add().Select
    objBook.Worksheets(1).Name = WorkbookName
    objExcel.Range(FirstRange).Select
    objExcel.ActiveSheet.Paste
    '    objExcel.Selection.Interior.ColorIndex = -4142 'xlNone
    objExcel.Range(FirstRange).Select
    If Val(objExcel.Version) > 11 Then
        objBook.SaveAs strFileName, xlExcel8
    Else
        objBook.SaveAs strFileName, xlNormal
    End If

Exit_ExportToExcel3:
    Set objExcel = Nothing
    Set objBook = Nothing
    Exit Function

Err_ExportToExcel3:
    Resume Exit_ExportToExcel3
End Function


子煜 发表于:2015-06-10 13:41:28
   Me.子窗体.SetFocus

   ExportToExcel "工作簿名称"


这样调用运行没反应呀?

工作簿名称 要路径吗?还是自动生成的工作簿?

  


煮江品茶 发表于:2015-06-11 13:50:16

试试

DoCmd.OutputTo acOutputForm, "子窗体"

 



总记录:6篇  页次:1/1 9 1 :