设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 18114|回复: 82
打印 上一主题 下一主题

[模块/函数] 将窗体内容导出到Excel并对其进行格式化

[复制链接]
跳转到指定楼层
1#
发表于 2004-11-11 06:48:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们开发软件过程中,经常需要将窗体或子窗体的数据导出到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编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2004-11-16 06:35:00 | 只看该作者
不错,非常好的实例!!

点击这里给我发消息

3#
发表于 2004-11-20 07:45:00 | 只看该作者
非常不错,收藏到专家讲座中了
4#
发表于 2004-12-3 05:56:00 | 只看该作者
虽然俺不懂VBA但支持郭老师。的确很好。。
5#
发表于 2005-6-24 05:55:00 | 只看该作者
不错,有实用价值
6#
发表于 2006-7-3 04:01:00 | 只看该作者
大部分代码可采用在Excel中录制宏得到代码,然后再做一些小改动就可以了。所以代码看似复杂,其实简单。
7#
发表于 2006-7-3 04:03:00 | 只看该作者



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
发表于 2006-7-9 00:46:00 | 只看该作者
[em02]这个例子好
9#
发表于 2006-7-13 16:06:00 | 只看该作者
以下是引用fan0217在2006-7-2 20:03:00的发言:





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

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



更高级的是用你的方式,



再高级的好像是从二进制文件格式,直接分析EXCEL文件格式入手,用友的华表控件好像就是这样,即使你的机器上没有安装EXCEL,在他软件中看到的表格样式,导出到EXCEL中时,是完全一样。
10#
发表于 2006-7-13 16:50:00 | 只看该作者
樓主采用的方法地球人都知道。數據多一點,配置低一點。可以等著死機了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-14 14:42 , Processed in 0.077701 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表