利用VFP制作财务报表——谈VFP与Excel的交互操作 周鸣扬 2000年 第4期   在VFP中制作财务报表(或者是其他报表),通常的方法是利用VFP的报表生成器一步一步地生成,这种方法用起来很麻烦,而且打印出来的报表格式也不能尽如人意。提到制作报表,你可能够马上想到大名鼎鼎的Excel,我们能不能将二者结合起来——利用VFP的数据处理的结果,再使用Excel排版并且打印输出,而且还要让二者结合得天衣无缝呢?答案是肯定的,利用OLE技术,你能够很容易地实现上述想法。   大家对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做出精美的财务状况变动表、利润分配表、主营业务收支明细表,再也不是难事了。