【摘 要】本文提出了一种基于Excel宏的固定资产折旧表的制作方法,它是借助Excel宏工具对新中大软件固定资产系统的折旧数据进行再利用,从而产生所需要的报表,此方法对现有财务软件的二次开发与利用很有借鉴意义。
【关键词】固定资产;数据文件;宏;折旧表
一、新中大NGPower固定资产管理系统简介
NGPower固定资产管理系统是新中大财务电算化系列软件之一,它作为其中的一个功能模块,既能与整套财务软件一起运行,也可以单独运行,它为用户提供固定资产管理所需要的各种功能,如建立固定资产卡片、每月自动计提折旧、输入并记录固定资产变动情况、生成所需的各种类型的账表。尽管该系统生成的各类账表能够满足用户的日常需要,但是有时用户某些特殊的需求却无法满足,如系统生成的“折旧计提明细表”中,我们需要在年中各月随时查看每项固定资产“本年折旧”数据,而系统只是在下一年的1月才能反映出来,不是很方便。为此,笔者根据多年的软件使用经验,利用系统提供的数据源,在Excel中制作出符合要求的“折旧表”,从而满足了用户的需求。
二、基于Excel宏的固定资产折旧表的制作
(一)数据源的准备
数据源的准备就是在固定资产模块中生成并输出用于在excel中制作所需报表的数据文件,由于每项固定资产的本年折旧是由各个月份的数据累计得到的,因此,在固定资产系统中必须生成两个文件:一个是从1月截止到当前月份的数据文件,命名为bnzj,另一个是当前月份的数据文件,命名为z***。
1、bnzj 数据文件的产生:
(1)进入固定资产模块,单击“查询打印”下的“折旧计提明细表”,在查询条件窗口中:选多个月份(要生成数据的那个月份,就选1月-那个月,如要生成11月的折旧数据,就选1-11月份),类别、部门选“全部”,然后单击“确认”,如下***(***1):
(2)选“打印”-“转换输出”(见***2)
注意:输入文件名时记住是在英文状态下:C:\bnzj (注意斜杠的方向)选“Text”,同时将“文件头带列标题”前面打上钩,单击“确认”按钮,如下***(见***3):
“转换输出”完成之后,单击两次“退出”,回到主菜单中,继续下面的操作。
2、z***数据文件的产生:
(1)在固定资产模块中,单击“查询打印”下的“折旧计提明细表”,查询条件:选一个月份(即要生成数据的那个月份,必须与前面一致,如要生成11月的折旧数据,就选11月份),类别、部门选“全部”,然后单击“确认”按钮,如下***(见***4):
(2)选“打印”-“转换输出”(***略,参见前***2),第二次输入文件名为:C:\z***,选Text,只将“文件头带列标题”前面打上钩,然后“确认” (***略,可参见***3)。 “转换输出”完毕后,退出固定资产管理系统,进入Excel系统,开始折旧表的编制。
(二)基于Excel宏的数据操作
在Excel中,主要完成两项工作:一是导入外部数据文件bnzj中的数据,即各月份的折旧数据,二是导入外部数据文件z***中的数据,即当前月份的折旧数据,并在此表的基础上扩充一列“本年折旧”,并利用分类求和函数sumif()引用各月份的折旧数据,算出“本月折旧”一列的数据,从而生成符合要求的折旧表,这一系列操作均通过Excel【工具】--“宏”―“录制新宏”将上述工作过程录制下来,以后各月通过执行所录制的宏来完成折旧表的编制。限于篇幅,就不详细介绍宏的录制过程了,以下为宏的内容(供参考)。
1.导入“各月折旧”数据的宏bnzj(为了便于识别,宏名也为bnzj)
Sub bnzj()
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\bnzj", Destination:= _
Range("A1"))
.Name = "bnzj"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle= xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 936
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
2.生成含“本年折旧”折旧表的宏z***(为了便于识别,宏名也为z***)
Sub z***()
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\z***", Destination:= _
Range("A1"))
.Name = "z***"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 936
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
ActiveWindow.ScrollColumn = 2
Columns("I:I").Select
Selection.Insert Shift:=xlToRight
Range("I1").Select
ActiveCell.FormulaR1C1 = “本年折旧”
Range("I2").Select
Columns("I:I").ColumnWidth = 8.13
Range("I2").Select
ActiveCell.FormulaR1C1 = "=SUMIF(各月折旧!C1,RC1,各月折旧!C[-1])"
Range("I2").Select
ActiveCell.FormulaR1C1 = "=SUMIF(各月折旧!C1,RC1,各月折旧!C8)"
Range("I3").Select
Columns("I:I").ColumnWidth = 9.5
Range("I2").Select
Selection.AutoFill Destination:=Range("I2:I57"), Type:=xlFillDefault
Range("I2:I59").Select
ActiveWindow.SmallScroll Down:=-63
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Range("A2:C2").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Range("A2:C2").Select
ActiveCell.FormulaR1C1 = “合计”
Range("A2:C2").Select
ActiveCell.FormulaR1C1 = “合 计”
Range("A2:C2").Select
ActiveCell.FormulaR1C1 = “合 计”
Range("E2").Select
ActiveCell.FormulaR1C1 = "sumif($A:$A,""=1"",E:E)"
Range("E2").Select
ActiveCell.FormulaR1C1 = "=SUMIF(C1,""=1"",C)"
Range("E2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIF(C1,""=1"",C)+SUMIF(C1,""=2"",C)+SUMIF(C1,""=3"",C)+SUMIF(C1,""=4"",C)"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:N2"), Type:=xlFillDefault
Range("E2:N2").Select
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("K2").Select
Selection.ClearContents
Range("F2").Select
Selection.ClearContents
Range("M2").Select
Selection.ClearContents
Range("N2").Select
Columns("M:M").ColumnWidth = 12
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Rows("1:1").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWindow.SmallScroll Down:=-12
Columns("F:F").ColumnWidth = 11
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
End Sub
(三)折旧表的生成
1.产生“各月折旧”工作表的数据
(1)单击“各月折旧”工作表标签(见***5)。
(2)执行宏“模块1.bnzj”,生成“各月折旧”数据。操作过程如下***(见***6和***7),执行后可以看到“各月折旧”工作表中出现数据(***略),为最后生成“折旧表”提供了数据源。
2.产生“折旧表”数据(操作过程同上)
结果见下***(见***8)。
3.对生成数据的折旧表进行完善
如数据对齐方式、画表格线,设置标题等。至此,一张满足用户需求的固定资产折旧表就制作完成了。
参考文献:
[1] 杭州新中大股份有限公司,固定资产管理系统V6.1用户手册
[2]木林森、高峰霞,Excel2000中文版使用与技巧,清华大学出版社,1999.200-202。
作者简介:孟繁敏(1973―),男,***伊犁州财贸学校讲师,硕士,主要从事会计电算化教学与研究。
转载请注明出处学文网 » 一种基于Excel宏的固定资产折旧表的制作