Vb对excel操作的实例.docx
《Vb对excel操作的实例.docx》由会员分享,可在线阅读,更多相关《Vb对excel操作的实例.docx(13页珍藏版)》请在冰豆网上搜索。
Vb对excel操作的实例
Vb对excel操作的实例
最近,由于工作关系,我用vb6.0做了一个计算成绩的软件,由于我不会数据库技术,同行对excel应用又比较普遍,所以就用vb6.0操作excel完成了成绩统计的任务。
先说说窗体,很简单,只运用了菜单,由此来调用程序代码。
截图如下:
窗体命名为excel操作,共五个一级菜单。
创建表册用来制作所用表格。
计算成绩用来算成绩。
模拟运算用来测试软件,设置了两个子菜单,一个填随机生成的数据。
有了数据就可以计算成绩了,看看效果如何。
测试完了就可以清空数据了,清空成绩册中的基础数据以后再计算一次成绩就基本可以使表册恢复原样了。
其实,我这是多此一举,回头一想,只需要重新创建所用表册就行了。
还画蛇添足了俩菜单:
计算器和退出。
代码也贴出来共享一下。
创建表册:
一年级:
PrivateSubynjkb_Click()
Call建空表(10)
Call工作表命名
(1)
Call成绩册
(1)
Unloadexcel操作
EndSub
创建表册:
二年级:
PrivateSubenjkb_Click()
Call建空表(10)
Call工作表命名
(2)
Call成绩册
(2)
Unloadexcel操作
EndSub
三至六年级略了吧。
创建表册:
学校总评:
PrivateSubxxzp_Click()
nj
(1)="一年级":
nj
(2)="二年级":
nj(3)="三年级":
nj(4)="四年级":
nj(5)="五年级":
nj(6)="六年级"
Call建空表
(2)
'建立积分表
Sheets
(1).Name="学校积分"
Sheets
(2).Name="积分"
Sheets("学校积分").Select
Range("a1:
i1").Merge
[a1]="学校积分统计表":
[a2]="学校":
[a3]="南村小学":
[a4]="东风小学":
[a5]="兴中小学":
[a6]="尧场小学"
nj
(1)="一年级":
nj
(2)="二年级":
nj(3)="三年级":
nj(4)="四年级":
nj(5)="五年级":
nj(6)="六年级"
Fori=1To6
Cells(2,i+1)=nj(i)+"积分"
Next
Cells(2,8)="均积分":
Cells(2,9)="名次"
Range([a1],[i6]).Select
Selection.HorizontalAlignment=xlCenter
Call表格加线(Range([a2],[i6]))
Call横排(6,9)
ActiveSheet.PageSetup.Orientation=xlLandscape
Unloadexcel操作
EndSub
创建表册:
上报:
PrivateSubshangbao_Click()
Call建空表
(2)
Sheets
(1).Name="中心校"
Sheets("中心校").Select
Call上报表("中心校")
Sheets
(2).Name="普小"
Sheets("普小").Select
Call上报表("普小")
Unloadexcel操作
EndSub
计算成绩:
一年级:
PrivateSubyinianji_Click()
Call打开工作表
Call算成绩
(1)
kmb
(1)="语文":
kmb
(2)="数学":
kmb(3)="英语"
Sheets(kmb
(1)).Select
Fori=1To8'记录一年级语文数据
Withbj(i)
.xxmc=Cells(2,i+1)
.dkjs=Cells(3,i+1)
.xkrs=Cells(4,i+1)
.xkzf=Cells(5,i+1)
.xkjgr=Cells(6,i+1)
.xkyxr=Cells(7,i+1)
.xkjf=Cells(8,i+1)
.bjkm=kmb
(1)
.njxh=1
EndWith
Next
Sheets(kmb
(2)).Select
Fori=1To8'记录一年级数学数据
Withbj(i+8)
.xxmc=Cells(2,i+1)
.dkjs=Cells(3,i+1)
.xkrs=Cells(4,i+1)
.xkzf=Cells(5,i+1)
.xkjgr=Cells(6,i+1)
.xkyxr=Cells(7,i+1)
.xkjf=Cells(8,i+1)
.bjkm=kmb
(2)
.njxh=1
EndWith
Next
Dimhgrs(8)'记录各学校合格人数
Fori=1To8
Sheets(xx(i)).Select
szl=Application.WorksheetFunction.Match("总分",Range([a2],[f2]))'总分所在列即合格人数所在列
szh=Application.WorksheetFunction.Match("合格人数",Range(Cells(2,szl),Cells(80,szl)))'“合格人数”所在行
hgrs(i)=Cells(szh+2,szl)
Next
'向学校总评表过录一年级数据
nj
(1)="一年级":
nj
(2)="二年级":
nj(3)="三年级":
nj(4)="四年级":
nj(5)="五年级":
nj(6)="六年级"
Workbooks.OpenFileName:
=ActiveWorkbook.Path&"\学校总评.xls"
Fori=1To16
WithSheets("积分")
Sheets("积分").Select
[a1]="年级":
[a2]="学科":
[a3]="学校":
[a4]="人数":
[a5]="总分":
[a6]="及格人数":
[a7]="优秀人数":
[a8]="积分"
.Cells(1,i+1)=nj(bj(i).njxh)
.Cells(2,i+1)=bj(i).bjkm
.Cells(3,i+1)=bj(i).xxmc
.Cells(4,i+1)=bj(i).xkrs
.Cells(5,i+1)=bj(i).xkzf
.Cells(6,i+1)=bj(i).xkjgr
.Cells(7,i+1)=bj(i).xkyxr
.Cells(8,i+1)=bj(i).xkjf
EndWith
Next
Workbooks.OpenFileName:
=ActiveWorkbook.Path&"\上报.xls"
WithSheets("中心校")'过录中心校成绩
.Cells(bj
(1).njxh*2+2,3)=bj
(1).xkrs+bj
(2).xkrs+bj(6).xkrs'语文
.Cells(bj
(1).njxh*2+2,4)=bj
(1).xkzf+bj
(2).xkzf+bj(6).xkzf
.Cells(bj
(1).njxh*2+2,5)=Round(.Cells(bj
(1).njxh*2+2,4)/.Cells(bj
(1).njxh*2+2,3),2)
.Cells(bj
(1).njxh*2+2,6)=bj
(1).xkjgr+bj
(2).xkjgr+bj(6).xkjgr
.Cells(bj
(1).njxh*2+2,7)=bj
(1).xkyxr+bj
(2).xkyxr+bj(6).xkyxr
.Cells(bj
(1).njxh*2+2,8)=hgrs
(1)+hgrs
(2)+hgrs(6)
.Cells(bj
(1).njxh*2+3,3)=bj(9).xkrs+bj(10).xkrs+bj(14).xkrs'数学
.Cells(bj
(1).njxh*2+3,4)=bj(9).xkzf+bj(10).xkzf+bj(14).xkzf
.Cells(bj
(1).njxh*2+3,5)=Round(.Cells(bj
(1).njxh*2+3,4)/.Cells(bj
(1).njxh*2+3,3),2)
.Cells(bj
(1).njxh*2+3,6)=bj(9).xkjgr+bj(10).xkjgr+bj(14).xkjgr
.Cells(bj
(1).njxh*2+3,7)=bj(9).xkyxr+bj(10).xkyxr+bj(14).xkyxr
.Cells(bj
(1).njxh*2+3,8)=hgrs
(1)+hgrs
(2)+hgrs(6)
EndWith
WithSheets("普小")'过录普小成绩
.Cells(bj
(1).njxh*2+2,3)=bj(3).xkrs+bj(4).xkrs+bj(5).xkrs+bj(7).xkrs+bj(8).xkrs'语文
.Cells(bj
(1).njxh*2+2,4)=bj(3).xkzf+bj(4).xkzf+bj(5).xkzf+bj(7).xkzf+bj(8).xkzf
.Cells(bj
(1).njxh*2+2,5)=Round(.Cells(bj
(1).njxh*2+2,4)/.Cells(bj
(1).njxh*2+2,3),2)
.Cells(bj
(1).njxh*2+2,6)=bj(3).xkjgr+bj(4).xkjgr+bj(5).xkjgr+bj(7).xkjgr+bj(8).xkjgr
.Cells(bj
(1).njxh*2+2,7)=bj(3).xkyxr+bj(4).xkyxr+bj(5).xkyxr+bj(7).xkyxr+bj(8).xkyxr
.Cells(bj
(1).njxh*2+2,8)=hgrs(3)+hgrs(4)+hgrs(5)+hgrs(7)+hgrs(8)
.Cells(bj
(1).njxh*2+3,3)=bj(11).xkrs+bj(12).xkrs+bj(13).xkrs+bj(15).xkrs+bj(16).xkrs'数学
.Cells(bj
(1).njxh*2+3,4)=bj(11).xkzf+bj(12).xkzf+bj(13).xkzf+bj(15).xkzf+bj(16).xkzf
.Cells(bj
(1).njxh*2+3,5)=Round(.Cells(bj
(1).njxh*2+3,4)/.Cells(bj
(1).njxh*2+3,3),2)
.Cells(bj
(1).njxh*2+3,6)=bj(11).xkjgr+bj(12).xkjgr+bj(13).xkjgr+bj(15).xkjgr+bj(15).xkjgr
.Cells(bj
(1).njxh*2+3,7)=bj(11).xkyxr+bj(12).xkyxr+bj(13).xkyxr+bj(15).xkyxr+bj(16).xkyxr
.Cells(bj
(1).njxh*2+3,8)=hgrs(3)+hgrs(4)+hgrs(5)+hgrs(7)+hgrs(8)
EndWith
Unloadexcel操作
EndSub
计算成绩:
二年级略。
计算成绩:
三年级:
PrivateSubsannianji_Click()
Call打开工作表
Call算成绩(3)
kmb
(1)="语文":
kmb
(2)="数学":
kmb(3)="英语"
Sheets(kmb
(1)).Select
Fori=1To5'记录三年级语文数据
Withbj(i)
.xxmc=Cells(2,i+1)
.dkjs=Cells(3,i+1)
.xkrs=Cells(4,i+1)
.xkzf=Cells(5,i+1)
.xkjgr=Cells(6,i+1)
.xkyxr=Cells(7,i+1)
.xkjf=Cells(8,i+1)
.bjkm=kmb
(1)
.njxh=3
EndWith
Next
Sheets(kmb
(2)).Select
Fori=1To5'记录三年级数学数据
Withbj(i+5)
.xxmc=Cells(2,i+1)
.dkjs=Cells(3,i+1)
.xkrs=Cells(4,i+1)
.xkzf=Cells(5,i+1)
.xkjgr=Cells(6,i+1)
.xkyxr=Cells(7,i+1)
.xkjf=Cells(8,i+1)
.bjkm=kmb
(2)
.njxh=3
EndWith
Next
Sheets(kmb(3)).Select
Fori=1To5'记录三年级英语数据
Withbj(i+10)
.xxmc=Cells(2,i+1)
.dkjs=Cells(3,i+1)
.xkrs=Cells(4,i+1)
.xkzf=Cells(5,i+1)
.xkjgr=Cells(6,i+1)
.xkyxr=Cells(7,i+1)
.xkjf=Cells(8,i+1)
.bjkm=kmb(3)
.njxh=3
EndWith
Next
xx
(1)="南村1":
xx
(2)="南村2":
xx(3)="兴中":
xx(4)="东风":
xx(5)="尧场"
Dimhgrs(5)'记录各学校合格人数
Fori=1To5
Sheets(xx(i)).Select
szl=Application.WorksheetFunction.Match("总分",Range([a2],[f2]))'总分所在列即合格人数所在列
szh=Application.WorksheetFunction.Match("合格人数",Range(Cells(2,szl),Cells(80,szl)))'“合格人数”所在行
hgrs(i)=Cells(szh+2,szl)
Next
'向学校总评表过录积分
nj
(1)="一年级":
nj
(2)="二年级":
nj(3)="三年级":
nj(4)="四年级":
nj(5)="五年级":
nj(6)="六年级"
Workbooks.OpenFileName:
=ActiveWorkbook.Path&"\学校总评.xls"
Fori=1To15
WithSheets("积分")
[a21]="年级":
[a22]="学科":
[a23]="学校":
[a24]="人数":
[a25]="总分":
[a26]="及格人数":
[a27]="优秀人数":
[a28]="积分"
.Cells(21,i+1)=nj(bj(i).njxh)
.Cells(22,i+1)=bj(i).bjkm
.Cells(23,i+1)=bj(i).xxmc
.Cells(24,i+1)=bj(i).xkrs
.Cells(25,i+1)=bj(i).xkzf
.Cells(26,i+1)=bj(i).xkjgr
.Cells(27,i+1)=bj(i).xkyxr
.Cells(28,i+1)=bj(i).xkjf
EndWith
Next
Workbooks.OpenFileName:
=ActiveWorkbook.Path&"\上报.xls"
WithSheets("中心校")'过录中心校成绩
.Cells(bj
(1).njxh*3-1,3)=bj
(1).xkrs+bj
(2).xkrs'语文
.Cells(bj
(1).njxh*3-1,4)=bj
(1).xkzf+bj
(2).xkzf
.Cells(bj
(1).njxh*3-1,5)=Round(.Cells(bj
(1).njxh*3-1,4)/.Cells(bj
(1).njxh*3-1,3),2)
.Cells(bj
(1).njxh*3-1,6)=bj
(1).xkjgr+bj
(2).xkjgr
.Cells(bj
(1).njxh*3-1,7)=bj
(1).xkyxr+bj
(2).xkyxr
.Cells(bj
(1).njxh*3-1,8)=hgrs
(1)+hgrs
(2)
.Cells(bj
(1).njxh*3,3)=bj(6).xkrs+bj(7).xkrs'数学
.Cells(bj
(1).njxh*3,4)=bj(6).xkzf+bj(7).xkzf
.Cells(bj
(1).njxh*3,5)=Round(.Cells(bj
(1).njxh*3,4)/.Cells(bj
(1).njxh*3,3),2)
.Cells(bj
(1).njxh*3,6)=bj(6).xkjgr+bj(7).xkjgr
.Cells(bj
(1).njxh*3,7)=bj(6).xkyxr+bj(7).xkyxr
.Cells(bj
(1).njxh*3,8)=hgrs
(1)+hgrs
(2)
.Cells(bj
(1).njxh*3+1,3)=bj(11).xkrs+bj(12).xkrs'英语
.Cells(bj
(1).njxh*3+1,4)=bj(11).xkzf+bj(12).xkzf
.Cells(bj
(1).njxh*3+1,5)=Round(.Cells(bj
(1).njxh*3+1,4)/.Cells(bj
(1).njxh*3+1,3),2)
.Cells(bj
(1).njxh*3+1,6)=bj(11).xkjgr+bj(12).xkjgr
.Cells(bj
(1).njxh*3+1,7)=bj(11).xkyxr+bj(12).xkyxr
.Cells(bj
(1).njxh*3+1,8)=hgrs
(1)+hgrs
(2)
EndWith
WithSheets("普小")'过录普小成绩
.Cells(bj
(1).njxh*3-1,3)=bj(3).xkrs+bj(4).xkrs+bj(5).xkrs'语文
.Cells(bj
(1).njxh*3-1,4)=bj(3).xkzf+bj(4).xkzf+bj(5).xkzf
.Cells(bj
(1).njxh*3-1,5)=Round(.Cells(bj
(1).njxh*3-1,4)/.Cells(bj
(1).njxh*3-1,3),2)
.Cells(bj
(1).njxh*3-1,6)=bj(3).xkjgr+bj(4).xkjgr+bj(5).xkjgr
.Cells(bj
(1).njxh*3-1,7)=bj(3).xkyxr+bj(4).xkyxr+bj(5).xkyxr
.Cells(bj
(1).njxh*3-1,8)=hgrs(3)+hgrs(4)+hgrs(5)
.Cells(bj
(1).njxh*3,3)=bj(8).xkrs+bj(9).xkrs+bj(10).xkrs'数学
.Cells(bj
(1).njxh*3,4)=bj(8).xkzf+bj(9).xkzf+bj(10).xkzf
.Cells(bj
(1).njxh*3,5)=Round(.Cells(bj
(1).njxh*3,4)/.Cells(bj
(1).njxh*3,3),2)
.Cells(bj
(1).njxh*3,6)=bj(8).xkjgr+bj(9).xkjgr+bj(10).xkjgr
.Cells(bj
(1).njxh*3,7)=bj(8).xkyxr+bj(9).xkyxr+bj(10).xkyxr
.Cells(bj
(1).njxh*3,8)=hgrs(3)+hgrs(4)+hgrs(5)
.Cells(bj
(1).njxh*3+1,3)=bj(13).xkrs+bj(14).xkrs+bj(15).xkrs'英语
.Cells(bj
(1).njxh*3+1,4)=bj(13).xkzf+bj(14).xkzf+bj(15).xkzf
.Cells(bj
(1).njxh*3+1,5)=Round(.Cells(bj
(1).njxh*3+1,4)/.Cells(bj
(1).njxh*3+1,3),2)
.Cells(bj
(1).njxh*3+1,6)=bj(13).xkjgr+bj(14).xkjgr+bj(15).xkjgr
.Cells(bj
(1).njxh*3+1,7)=bj(13).xkyxr+bj(14).xkyxr+bj(15).xkyxr
.Cells(bj
(1).njxh*3+1,8)=hgrs(3)+hgrs(4)+hgrs(5)
EndWith
Unloadexcel操作
EndSub
计算成绩:
三至六年级略。
计算成绩:
学校总评:
PrivateSub学校总评_Click()
Call打开工作表
Fori=1To6
C