Access交流中心

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

请教:关于access子窗体导出EXCEL的问题

小明  发表于:2010-10-08 23:32:33  
复制

各位大哥,我在网上找到的这段代码,在运行时为什么不能打开EXCEL的另存为对话框,请指点一二.谢谢!代码如下:
  Dim xls As Object
  Dim xlsbook As Object
  Dim i As Integer
  Set xls = CreateObject("excel.application")
  Set xlsbook = xls.Workbooks.Add
  Me.子窗体名称.Form.Recordset.MoveFirst
  For i = 0 To Me.子窗体名称.Form.Recordset.Fields.Count - 1
  xlsbook.Worksheets(1).Cells(1, i + 1).Value =Me.子窗体名.Form.Recordset.Fields(i).name
  Next
  xls.Worksheets(1).Range("A2").CopyFromRecordset Me.子窗体名称.Form.Recordset
  xlsbook.Application.Dialogs(xlDialogSaveAs).Show    '问题就出在这,ACCESS总不执行此句,也就是无法打开EXCEL的另存为对话框,不知何解?
  xls.Quit
  Set xlsbook = Nothing
  Set xls = Nothing

 

Top
羽扇子君 发表于:2010-10-11 18:53:59

导出至Excel实例:

Dim theTempData As Variant, fd As FileDialog, thePath As String
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    With fd
        .Title = "导出至 .xls类型"
        .AllowMultiSelect = False
        .ButtonName = "确定(&O)"
    End With
    theAddTextBox "请选择一个 Excel格式(.xls)文件,或单击“取消”按钮以退出!"
    If fd.Show = -1 Then
        thePath = fd.SelectedItems(1)
        Set fd = Nothing
        DoCmd.SetWarnings False
        DoCmd.RunSQL "SELECT 猪群档案表.耳号, 猪群档案表.性别, 选项表.属性值 AS 种类, 选项表_1.属性值 AS 品种, 选项表_2.属性值 AS 状态, 选项表_3.属性值 AS 饲养员, 选项表_4.属性值 AS 所在猪舍 INTO 合格猪群档案 " & _
            "FROM 选项表 AS 选项表_4 INNER JOIN (选项表 AS 选项表_3 INNER JOIN (选项表 AS 选项表_2 INNER JOIN (选项表 AS 选项表_1 INNER JOIN (选项表 INNER JOIN 猪群档案表 ON 选项表.属性ID = 猪群档案表.种类) ON 选项表_1.属性ID = 猪群档案表.品种) ON 选项表_2.属性ID = 猪群档案表.状态) ON 选项表_3.属性ID = 猪群档案表.饲养员) ON 选项表_4.属性ID = 猪群档案表.所在猪舍 " & _
            IIf(stWhereString = "", ";", "WHERE (" & stWhereString & ");")
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "合格猪群档案", thePath & IIf(Right(thePath, 3) = "xls", "", ".xls")
        DoCmd.DeleteObject acTable, "合格猪群档案"
        DoCmd.SetWarnings True
    End If

原理是:先将子窗体中的记录生成一个临时表,然后将之导出,之后,再将临时表删除之.SQL语句,是生成表查询

 

注意:要打开另存为对话框 ,要进行Office库的引用.



小明 发表于:2010-10-12 18:43:28

多学一种方法...谢谢!



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