利用UFO报表格模板批处理制作合并报表格模板Word下载.docx
《利用UFO报表格模板批处理制作合并报表格模板Word下载.docx》由会员分享,可在线阅读,更多相关《利用UFO报表格模板批处理制作合并报表格模板Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
![利用UFO报表格模板批处理制作合并报表格模板Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/6/078b1dfc-ecec-46f3-96b1-ebfd8681183a/078b1dfc-ecec-46f3-96b1-ebfd8681183a1.gif)
\合并报表\zt013\2008\资产负债表.rep
简单的合并方式:
将zt013的资产负债表的对应的单元格与ZT003对应的单元格相加。
批处理放在以下文件夹:
\合并报表\批处理\2008
我们先简单建立一个批处理,用以实现两个单元格的简单合并,文件命名为“zt003zcfzb.shl”
批命令如下:
LETC7=C7+"
\合并报表\zt003\2008\资产负债表.rep"
->
C7RELA年WITH"
年,月WITH"
月
起码知道以上的命令可以实现将C7单元格的数据加上“D:
\合并报表\zt003\2008\资产负债表.rep”C7的数据。
但是如果这样做的话,每一个单元格就要一条语句,而且如果有多张表的话,就更加复杂,而且如果到时候要修改的话,比如到了2009年的话,每一条都要改一下,甚至如果单元格发生变化,要改的话,那不是要疯掉!
!
所以在想能不能通过变量来实现,便于后续修改。
?
经过翻查资料,大概知道了变量的应用,然后就来实现吧。
第一步,把报表路径变量化,可以直接设定一个变量&
rep,然后赋值,语句如下:
let&
rep="
那么单元格的赋值就可以这样来写:
LETC7=C7+&
rep->
C7RELA年WITH&
年,月WITH&
这样写可以减少修改报表路径的问题,至少改个路径变量值,其他就不用改了,相对来说比较方便一些,但是,问题是单元格也是比较麻烦,一条一来,有没有什么其他办法呢?
睡觉的时候突然想到能否用循环来处理,如果可以就好办多了,于是就开始实施,用while循环,但是问题是如何来表示列号和行号呢?
经过翻查资料,有一个意外的发现:
有了这个意外的发现之后,我就想,干脆把路径、列号、行号都用变量表示算了,看看情况如何,代码如下:
//设置报表路径、合并起始列、起始行
rep1="
\合并报表"
rep2="
\zt003"
rep3="
\2008"
rep4="
\资产负债表.rep"
col0=3
row0=7
//设置报表路径
rep=&
rep1+&
rep2+&
rep3+&
rep4
//设置列号
col=&
col0
//设置行号
row=&
row0
//通过循环合并数据,合并C7
55的单元格
while&
col<
=4
row<
=55
let!
&
col#&
row=!
row+&
!
rowrela年with&
年,月with&
row+1
end
col+1
做了以上变动之后,至少修改起来事比较简单,可以把这段代码保存为“zt003zcfzb.shl”
通过以上的批处理命令,我们在执行此批命令的时候,就可以实现把一个表的C7
55的单元格与ZT003的对应的单元格相加。
现在的情况有所变化,我们有两种需要合并的报表,比如
最终合并到以下表:
\合并报表\01母公司\2008\资产负债表.rep
如何实现呢?
如何来利用之前做的批命令呢?
难道需要把批命令重复写一遍吗?
突然想到,能否通过调用批命令文件,相当于编程里面的“include”,那问题就可以解决了,也就是说,将一个合并的批命令写成一个批命令文件,然后来调用,只要有需要合并的时候,就调用此批命令,问题就可以解决了,减少重复工作,同时容易修改。
在批处理里面是有一个调用批命令的命令,就是用”DO”命令。
我们把之前做的“zt003zcfzb.shl”重新另存为“zcfzb_hbbb.shl”,路径如下:
DO"
\合并报表\批命令\2008\zcfzb_hbbb.shl"
然后我们建立一个“zcfzb_main.shl”的批处理文件来调用。
代码如下:
//首先进入数据状态
DATA
//报表取数
把此文件放在:
\合并报表\00批命令\01母公司\2008\zcfzb_main.shl
为了能够在进入报表的时候,将最终合并的报表的数据先清空,同样我们做一个清空的批处理命令。
//清空数据,合并数据前先把数据清空。
CLEARC7
55
CLEARG7:
H55
把文件命名为“D:
\合并报表\批命令\2008\zcfzb_clear.shl”以备调用
然后我们对“zcfzb_main.shl”的批命令再次修改,加入清除数据的批处理。
//清空数据
\合并报表\批命令\2008\zcfzb_clear.shl"
那么以后不管有多少张表,资产负债表,损益表等等,只要每一张表都保存相应的三个批处理(主命令、清空命令、合并命令)。
只是每张表需要修改的地方就是将“zcfzb_hbbb.shl”里面的参数做一些修改。
比如路径、文件名称、年份,列名等等。
但是能否有更好的办法呢?
能否将合并数据作为一个通用的模板,用来调用呢?
然后把变量的赋值放在主程序中进行,这样不是更好吗?
模型:
这个时候,我们开始做统一规划了:
\合并报表\批命令\2008\
主程序(主批处理):
zcfzb_main.shl
子程序(清空数据):
zcfzb_clear.shl
子程序(合并报表):
zcfzb_hbbb.shl
先把主程序列出:
//----------------------------------------------------程序开始----------------------------------------
//合并报表
//合并报表说明:
//zt003广海本部
//----------------------------------------------------首先进入数据状态--------------------------------
//--把变量清空,然后要求输入关键字。
freeall
if年=0
disp"
请先输入关键字"
return
else
//--设置批处理命令的路径。
shl01="
\合并报表\00批命令"
shl02="
\01母公司"
shl03="
shl04=&
shl01+&
shl02+&
shl03
shlclr="
\zcfzb_clear.shl"
shlhb="
\zcfzb_hbbb.shl"
shlclr=&
shl04+&
shlclr
shlhb=&
shlhb
//----------------------------------------------------清空数据----------------------------------------------------
DO&
//----------------------------------------------------初始化取数报表--------------------------------------------
//设置取数帐套
col01=3
//设置列起始值
C
colmax01=4
//设置列循环最大值D
col02=7
G
colmax02=8
//设置列循环最大值H
row01=7
//设置行起始值
7
rowmax=55
//设置行循环最大值55
//-----------------------------------------------------报表取数----zt003
row0=&
row01
//----------------------------------------------------01.分列取数1
col0=&
col01
//设置列起始值C
colmax=&
colmax01
//----------------------------------------------------02.分列取数2
col02
//设置列起始值G
colmax02
//----------------------------------------------------END------------------------------------------
//---------------------------------------------------保存报表------------------------------------------
//save
//第一层IF的结尾
清空命令:
CLEARc7
CLEARg7:
h5
合并命令:
//------------------------合并报表---------------------------------------------
//通过循环合并数据
=&
colmax
rowmax
//重新置位,否则行的循环无法进行
以后如果需要合并报表,其实要改的就是zcfzb_main.shl文件里面的两个段落,一个是“路径设置”,一个是“报表取数”。
比如需要修改批命令的路径和批命令对应的文件名,则改以下蓝色部分。
\02合并口径"
如果需要修改需要合并的报表,那么就改以下内容:
如果需要合并的列和行需要修改,则改:
如果需要添加合并的报表,比如添加zt013,那么就在zt003的合并代码下,添加以下代码,其实就是复制。
//-----------------------------------------------------报表取数----zt013
\zt013"