Office中国论坛/Access中国论坛

标题: 将窗体内容导出到Excel并对其进行格式化 [打印本页]

作者: guotianxin    时间: 2004-11-11 06:48
标题: 将窗体内容导出到Excel并对其进行格式化
我们开发软件过程中,经常需要将窗体或子窗体的数据导出到Excel,以便进行数据分析、统计或生成图表,所以使用代码自动完成这些操作,就可以得大大提高效率,下面就这个问题,归纳总结一下,希望对大家有所帮助:

一、在Access中使用代码打开Excel:

ublic MyXL As Object

'打开Excel

Sub GetExcel()

    Const ERR_APP_NOTRUNNING As Long = 429

   

    On Error Resume Next

    Set MyXL = GetObject(, "Excel.Application")

    If Err = ERR_APP_NOTRUNNING Then

        Set MyXL = New Excel.Application

    End If

   

    MyXL.Application.Visible = True

End Sub

使用这段代码,可以打开一个Excel实例或者引用已经打开的Excel实例

二、新建一个工作簿

Sub CreateNewBook

    MyXL.Application.Workbooks.Add

End Sub

三、使用代码将窗体上的数据复制到Windows粘贴板

Sub CopyToClip

        Forms(FormName).Controls(SubFormName).SetFocus

        DoCmd.RunCommand acCmdSelectAllRecords

        DoCmd.RunCommand acCmdCopy

End Sub

四、使用代码将Windows粘贴板的内容粘贴到Excel

Sub CopyToExcel()

    GetExcel

    MyXL.Application.Workbooks.Add

    MyXL.Application.ActiveSheet.Paste

End Sub

五、对导出到Excel中的数据进行格式化,比如,加上报表标题、设置表格线等。

Sub FormatTAB()

    SetLine      '设置表格线的子程序,在Access中实现对Excel文档格式化

    '插入两行作为标题行

    MyXL.Application.ActiveSheet.Rows("1:1").Select

    For j = 1 To 2

        MyXL.Application.Selection.Insert Shift:=xlDown

    Next j

    MyXL.Application.ActiveSheet.Range("A1") = “标题文字”

   

    '设置表标题字体

    MyXL.Worksheets(1).Range("A1").Select

    With MyXL.Application.Selection.Font

        .Name = "宋体"

        .Size = 16

    End With

End Sub

'设置表格线

Sub SetLine()

   

    On Error Resume Next

    MyXL.Application.Selection.Borders(xlDiagonalDown).LineStyle = xlNone

    MyXL.Application.Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    MyXL.Application.Selection.WrapText = False

    With MyXL.Application.Selection.Borders(xlEdgeLeft)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlEdgeTop)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlEdgeBottom)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlEdgeRight)

        .LineStyle = xlContinuous

        .Weight = xlThin

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlInsideVertical)

        .LineStyle = xlContinuous

        .Weight = xlHairline

        .ColorIndex = xlAutomatic

    End With

    With MyXL.Application.Selection.Borders(xlInsideHorizontal)

        .LineStyle = xlContinuous

        .Weight = xlHairline

        .ColorIndex = xlAutomatic

    End With

End Sub



六、关闭打开的工作簿

'关闭Excel

Sub CloseExcel()

    On Error Resume Next

    MyXL.Application.DisplayAlerts = False

    MyXL.Application.Save

    MyXL.Application.Quit

    Set MyXL = Nothing    '释放对该应用程序

End Sub

经过上面的讲述,一个完整的导出操作就完成了。

如果大家想看看实例程序实现的效果,可以在我的网站上下载客户管理软件,试用一下

下载地址:[url=http://www.office-cn.net/vvb/www.szyyt.com]www.szyyt.com[/url]

作者QQ:747767  253675026

MSN:guotx@hotmail.com

作者:guotianxin郭天新

在Access中用代码执行Excel文件中宏,实现对文件的格式化操作实例:









[此贴子已经被作者于2004-11-12 23:35:01编辑过]

作者: tmtony    时间: 2004-11-16 06:35
不错,非常好的实例!!
作者: tmtony    时间: 2004-11-20 07:45
非常不错,收藏到专家讲座中了
作者: 164338968    时间: 2004-12-3 05:56
虽然俺不懂VBA但支持郭老师。的确很好。。
作者: keyck    时间: 2005-6-24 05:55
不错,有实用价值
作者: fan0217    时间: 2006-7-3 04:01
大部分代码可采用在Excel中录制宏得到代码,然后再做一些小改动就可以了。所以代码看似复杂,其实简单。
作者: fan0217    时间: 2006-7-3 04:03
[attach]18831[/attach]


我也做了个例子,但采用的不是楼主的复制粘贴的方法,采用的是ADO,同时进行了打印设置。
作者: zhang81524    时间: 2006-7-9 00:46
[em02]这个例子好
作者: xlonger    时间: 2006-7-13 16:06
以下是引用fan0217在2006-7-2 20:03:00的发言:


[attach]18831[/attach]


我也做了个例子,但采用的不是楼主的复制粘贴的方法,采用的是ADO,同时进行了打印设置。

用粘贴,复制的方式,对ACCESS初学者来说,还是合适的,我做的一个程序就是采用这个思路,需要的功能,先在EXCEL中用宏录制一下,然后在复制到ACCESS VBE中修改,缺点是每次都要调用EXCEL,如果代码没有写好,调用的EXCEL还会留在内存中。



更高级的是用你的方式,



再高级的好像是从二进制文件格式,直接分析EXCEL文件格式入手,用友的华表控件好像就是这样,即使你的机器上没有安装EXCEL,在他软件中看到的表格样式,导出到EXCEL中时,是完全一样。
作者: lirong    时间: 2006-7-13 16:50
樓主采用的方法地球人都知道。數據多一點,配置低一點。可以等著死機了。
作者: xpicasso    时间: 2006-7-27 16:49
标题: 有更简单的办法
docmd.RunCommand acCmdOutputToExcel

在打开的窗体中运行这个命令,一句话搞定。
作者: sywjlxd    时间: 2006-8-27 06:37
找好久了,谢谢


作者: liuyantop    时间: 2006-8-29 04:19
非常感谢,大家的交流学习,谢谢!
作者: wx120-    时间: 2007-12-4 03:01
asdfasfasdfasfasfasdfsad
作者: yori2007    时间: 2008-3-24 09:18
[:31] [:30] [:50]
作者: ABCaccess    时间: 2008-6-1 18:04
谢谢你与大众分享
作者: whyg519    时间: 2008-8-9 13:29
我下了,好好学习
作者: wktt6833    时间: 2008-10-8 13:38
不错,非常好的实例!!
作者: linag516    时间: 2008-12-15 14:55
[:50] thank
作者: ElfMouz    时间: 2008-12-16 14:46
非常不错
作者: cool_fuuu    时间: 2008-12-17 10:02
谢谢分享
作者: wen123456    时间: 2008-12-17 22:25
[:25] [:26] [:27] [:31] [:30]
作者: 13555609005    时间: 2009-1-20 14:03
不错,有实用价值
作者: kn1394    时间: 2009-3-24 09:13
try
作者: wjsfeng    时间: 2009-3-24 09:15
学习
作者: wdq    时间: 2009-3-24 11:22
谢谢提供
作者: yuayua23    时间: 2009-3-28 21:12
谢谢
作者: liuxinquan    时间: 2009-4-1 01:55
非常不错,收藏到专家讲座中了
作者: 82077802    时间: 2009-4-1 06:29
thanks
作者: 鱼求雨    时间: 2009-4-16 19:29
死机也感谢,只要不用人工.
作者: apsfxc1    时间: 2009-4-22 11:54
感谢分享
作者: lxh0513    时间: 2009-4-22 13:51
ffww
作者: wzh    时间: 2009-4-22 15:40
非常不错
作者: xuwenning    时间: 2009-4-23 14:28
学习学习
作者: 月之狼神    时间: 2009-4-27 14:26
先顶一下
作者: jackysu78    时间: 2009-6-23 15:47
thanks
作者: sunwrsun    时间: 2009-7-11 17:02
非常好
作者: huangxiuwen    时间: 2009-7-15 00:21
学习
作者: qkjack    时间: 2009-7-17 15:45
感谢,正在找
作者: 相当板札    时间: 2009-7-21 14:11
不错,有实用价值
作者: sunwrsun    时间: 2009-7-25 16:37
非常好
作者: sunwrsun    时间: 2009-7-25 16:40

作者: fnsmydyang    时间: 2009-7-29 20:47
经典收藏学习
作者: mingri    时间: 2009-8-4 14:53
看看这个
作者: zhiyan    时间: 2009-8-7 16:59
不错,有实用价值
作者: zhiyan    时间: 2009-8-7 17:02
不错,有实用价值
作者: aq217    时间: 2009-8-25 16:20
学习
学习
谢谢分享
作者: yanwei82123300    时间: 2009-9-29 13:29
不错,非常好的实例
作者: chaojianan    时间: 2009-10-10 15:45
谢谢分享。
作者: lzbboy    时间: 2009-10-12 11:01
哈哈  很好
作者: xxiaoxin321    时间: 2009-10-16 14:52
很详细的讲解,学习!
作者: c101    时间: 2009-10-18 11:07
謝謝
作者: yedaoan    时间: 2009-11-10 10:05
确实是个好示例
作者: lymin    时间: 2009-11-10 10:11
1# guotianxin 不错,好好学习
作者: goto2008    时间: 2009-11-12 00:56

作者: 付谦    时间: 2009-11-17 09:02
学习
作者: cashiba    时间: 2009-12-12 02:15
好东西,学习了,谢谢
作者: cashiba    时间: 2009-12-12 02:20
都是高手.............
作者: 风清九剑扬    时间: 2010-2-9 17:33
很好很好
作者: zzyzzg    时间: 2010-2-9 20:42
看看
作者: officer_mk    时间: 2010-3-11 19:32

作者: zzyzzg    时间: 2010-3-11 19:58
收藏到专家讲座中了
作者: zzyzzg    时间: 2010-3-11 19:58
收藏到专家讲座中了
作者: liaoqiang234    时间: 2010-3-11 20:06
xue xi
作者: 文棣    时间: 2010-3-30 09:12
学习学习
作者: LeeTien    时间: 2010-4-9 17:27
不错
学习下先
作者: 想做NO.1    时间: 2010-6-9 16:54

作者: liangshiheng    时间: 2010-6-11 01:28
dddddddddddddddddddddddd
作者: liangshiheng    时间: 2010-6-11 01:37
dddddddddddddddddddd
作者: shines    时间: 2011-1-14 13:21
谢谢,  学习收藏!
作者: lwb_hao    时间: 2011-1-28 15:07
好东东
作者: longdoupj    时间: 2011-2-26 08:55
我下了,好好学习
作者: XIEMR    时间: 2011-3-3 20:55
不错不错
作者: lnlyhsn    时间: 2011-4-3 17:20
踩踩 看看
作者: gxy1000    时间: 2011-4-3 18:54
KK
作者: js7756    时间: 2011-4-17 00:19
学习一下
作者: shenzhenzch    时间: 2011-4-19 10:10
看看实例
作者: pigbrain    时间: 2012-8-25 10:53
我想研究学习一下。谢谢。
作者: aleeado    时间: 2012-8-25 12:32
DING
作者: dfang    时间: 2012-8-26 17:59

作者: jc2016    时间: 2013-8-30 14:39
学习
作者: 心情如故    时间: 2015-3-20 20:38
学习
作者: 大亨    时间: 2015-4-15 21:17
好好好




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