利用VFP制作财务报表——谈VFP与Excel的交互操作
大家对VFP的CreateObject函数可能不会陌生,利用CreateObject函数,你能够在VFP中创建并使用任何在你计算机上注册了的类(通常在安装应用程序时,应用程序都会向注册表里添加类信息)。也就是说你能够在VFP中调用任何应用程序为你的数据处理服务。CreateObject的具体用法如下:
CREATEOBJECT(ClassName[eParameter1,eParameter2,...])
其中,ClassName指明欲建立对象的类名。eParameter1,eParameter2……是用来传递参数给OLE对象的(OLE对象进行初始化时要用要到的)。例如,在VFP中欲建立一Excel工作簿对象,只须在程序中加入下列语句:MySheet=CREATEOBJECT(′Excel.Sheet′)就行了。
要在VFP中灵活地调用Excel为你服务,首先你应该对Excel提供的各类对象进行深入了解。Excel为我们提供了一百多种对象,如应用程序对象、图表对象、工作簿对象等等。对于每种对象调用,你得遵循一定的规则(也就是说你必须熟悉VBA编程)。接下来介绍Excel常见对象的调用方法。
#1 一、创建Excel对象类
1.建立Excel对象MyExcel=CREATEOBJECT(′Excel.application′)
2.建立工作簿对象MyExcel.workbooks.Add
#1 二、文件操作类
1.引用Excel文件Getobject(″Excel文件名″)
2.打开文件workbook.open(″文件名″)
3.保存文件workbook.SaveAs(″文件名″)
4.打印文件workbook.Printout(″文件名″)
注意,上面的workbook为当前活动的工作簿。
实例:假设到了月底,你用计算机对当月的账务资料整理后,得出了当月的损益表,底稿如下(名称为syb.dbf)。
项 目 本月数 本年累计数
产品销售收入 98765.4
产品销售成本 73244.3
产品销售费用 1878.00
产品销售税金及附加355
产品销售利润 ---
其他业务利润
管理费用 678
财务费用 333
营业利润 ---
投资收益
营业外收入 1000
营业外支出
利润总额 ---
由于Excel中自带了损益表模板,因此我们能够很方便地在Excel中创建损益表。在VFP中建立一程序syb.prg,其内容如下(为节约篇幅,程序中略去了输入本年累计数的语句)。
close all
use syb
go top
*新建一Excel对象
oleapp=Createobject(″Excel.Application″)
*让Excel对象可见,如果设为F(不可见),你能够让VFP后台运行Excel,借此可以保持界的一致性。
oleapp.visible=.t.
*添加工作簿
oleapp.workbooks.add
*打开Excel自带的财务报表模板
oleapp.workbooks.open(″C:\Program Files\Microsoft Office\Templates\电子表格模板\工业企业财务报表.xlt″)
*激活损益表
oleapp.sheets(″损益表″).select
*追加数据
i=1
do while i<=13
if i#5 and i#9 and i#13
oleapp.cells(i+6,4).value=本月数
endi
i=i+1
skip
endd
应该注意的是,在Excel自带的损益表模板中,有些单元格是自动计算的,如产品销售利润、营业利润、利润总额,你不能够去修改的。这也是在上面程序中加入“if i#5 and i#9 and i#13”语句的原因。另外,你事先应该根据你的实际情况对损益表模板进行修改,比如设置纸张大小、字体等等。当然你也可以在运行时进行设置(加入oleapp.activeworkbook.printpreview)语句。
上面只是简单地介绍了在VFP中生成损益表的方法。要想更好地将VFP和Excel结合,你可以在Excel中尝试“录制宏”的功能,因为你在Excel中的任何操作都能够被录制成“宏”。“宏”能够以VBA语句的形式重现你刚才的你操作。举一反三,这下利用VFP做出精美的财务状况变动表、利润分配表、主营业务收支明细表,再也不是难事了。