Access利用excel制作复杂报表的方法

Access利用excel制作复杂报表的方法

       在读这篇文章以前首先要提醒大家,Access 本身的报表也具有很强的实用性和强大的功能,只有当你发掘了其本身全部的功能却仍不能满足你对报表的特殊要求时才请使用 Excel 输出报表。很明显,使用 Excel 输出报表第一个弱点就是必须同时打开 Access 和 Excel (当然,你得在一台机器上同时安装 Access 和 Excel),当然如果你拥有工作在 966MHz 上的 CPU 和 256M 内存以及大容量硬盘时,那就不必考虑了,继续吧。
首先找到 VBA 编程界面并找到"工具"菜单并单击"引用..."菜单项,在弹出的"引用"窗体中找到"现有引用"列表,在名为"Microsoft Excel x.0 Object Library"的项目前的方框内打钩。
其次,你要做好一张空白的 Excel 电子表格,设定好显示字体、边框、打印纸张等等并将其存盘。(以下示例中该表格名为 "temp.xls" )当然啦,直接使用空白的 Excel 文件也是可以的,不过你要编程自动生成表格边框、背景颜色、单元格格式等一些内容,这些涉及到 Excel 编程。

然后你就可以在 Access 里面制作你自己的打印预览窗体了,在窗体中安排 2 个命令按钮,在名为预览的按钮的 click 事件里输入以下代码:

Private Sub ExcelPreview_Click()
Dim xlApp As Excel.Application
Dim xlBook As Workbook, xlSheet As Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlApp = New Excel.Application
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open("c:/reprot/temp.xls")
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Cells(3, 1) = "制表日期:" + "12" + " 月"
'以上只更改了一个单元格内的数据,可根据需要无限次加入
xlBook.Save
xlSheet.PrintPreview '如果是要打印,只要把 PrintPreview 改为 PrintOut
xlBook.close
xlApp.Quit
End Sub
OK,然后就可以单击该按钮看看生成的表格如何了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
本想自动读取报表的纸张大小,但返回来值都是默认纸张的大小,所以用了<BR>Selest case 词句,但这样结果是纸张的类型不齐全。没有类型对应的纸张的在大小不能正确判断(此情况下,如果提供的参数不正确,报表结果将会变乱。此时只要调整一下参数。即得到正确的报表。)。如果有谁能解决此问题,请告知一声。 <P><P>以下为新的函数说明:<BR>==============================================================<BR>函数名:RepDetail_Format()<BR>调用报表必须使用控件:(文本框)<BR>txtRecord_NO 在主体节 可见 用于显示记录号,可选<BR>txtTotGrp 在主体节 不可见 =Count(*) 用于取得报表的总记录数,必须<BR>txtCurrentPage 在主体节 不可见 =[Page] 用于取得当前页数,必须<P>参数说明: RepName 报表名称 (当前报表可用 (Me), 其它报表可用:(Reports.报表名)引用),必须<BR>txtCurrentPage 报表主体节上的[txtCurrentPage]文本框控件 ,必须<BR>txtRecordNum 报表定义的私人变量 数据类型:Integer 用于记录数的递增,必须<BR>(注:在报表模块顶部声明 : Private txtRecordNum As Integer )<BR>txtTotGrp 报表主体节上的[txtTotGrp]文本框控件 ,必须<BR>IntPrintLen 报表打印的行数。<BR>-----数据类型:Integer (注:不可超过每页允许的最大记录数),可选,(默认:25 行)<BR>DouPageLine 报表主体记录部分打印长度。<BR>-----数据类型:Double (注:不可超过每页允许的最大记录数),可选,(默认:21 CM )<BR>FontSize 报表记录部分字号。<BR>-----数据类型:Integer (注:不可超过每页允许的最大记录数),可选,(默认:0 字号不变)<BR>txtRecord_NO 记录序号文本框名称。<BR>-----数据类型:String (注:不可超过每页允许的最大记录数),可选,(缺省为没有使用)<P><BR>使用方法:<BR>1,先定义一私人变量:Private txtRecordNum As Integer,必须<BR>2,报表主体节的格式化事件中调用(Detail_Format 事件)<BR><BR>调用方法:NextRecord=RepDetail_Format(RepName , txtCurrentPage.text , txtRecordNum , txtTotGrp.text , IntPrintLen)<BR>使用示例:NextRecord = RepDetail_Format(Me, [txtCurrentPage], txtRecordNum, [txtTotGrp], 20)<BR>本函数由 binuochao (许伟军) 完成。制作于2003-06-27 Email:[email protected] QQ:10077241<P><BR>=============================================================  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值