VB操作excel表
1 需求分析
1.1 基础功能需求
(1)启动软件后,加载Excel文件内容到界面中列表或文本框。
(2)修改界面中列表或文本框内容,点“保存”按钮,将内容保存到原Excel文件。(3)点击界面“读取”按钮,将修改后的Excel文件内容显示到界面列表或文本框。(4)实现VB按钮指令,使加载的Excel自动绘制图表。【重点难点】
1.2 附加需求
(1)把从VB控件获取的数据保存到指定文件,若没有文件,则创建指定文件名文件(2)待定
1.3 技术应用
(1)把Excel表作为数据库,可通过VB界面对其进行添加、查询、修改和删除等操作,使操作界面更加直观、交互和方便。如可编写通讯录软件,将信息录入Excel,通过软件界面操作,更加方便快捷。
(2)如能把桌面软件、磁盘数据和网络数据进行交互存取,将更加方便获取和查询信息。(3)结合VBA教程,通过界面实现对Excel表格及其他支持宏的office软件的操作。
2 实现过程
2.1 界面设计及分析
(1)点击“打开文件”按钮,弹出“打开文件对话框”,选择文件后,文件路径将显示到右下角“当前文件路径”文本框中。
(2)点击“读取当前文件”按钮,当前路径Excel表的A、B、C三列将显示到ListBox列表框中。若列表框不能一行显示多项,则用三个列表框分别显示A、B、C三列。
(3)点击“开始传输数据”按钮,按钮提示文字变为“停止数据传输”,指示灯变绿,计时器启动,规定间隔时间改变时间、温度、电容文本框的数值,并将其写入当前文件路径的Excel表的A、B、C单元格中。点击“停止数据传输”按钮,指示灯变黑,计时器停止,时间、温度、电容文本框的数值不再变化,停止向当前文件路径的Excel表写入数据。
(4)点击“保存文件”按钮,写入当前文件路径Excel表格的内容直接保存。
(5)点击“文件另存为”按钮,弹出“文件另存为”对话框,选择文件保存路径,输入文件名称后,自动添加为.xls扩展名,创建并保存文件。
(6)点击“关闭当前文件”,将关闭已经打开的Excel应用程序,释放表格资源。
(7)点击“生成图表”,对当前Excel文件绘制平滑曲线散点图。
2.2 变量名称及说明
(1)标签名称
名称说明参数规格lblTitle 软件标题
lblTime 时间标签
lblTemperature 温度标签
lblCapacitance 电容标签
(2)文本名称
名称说明参数规格txbTime 时间文本框
txbTemperature 温度文本框
txbCapacitance 电容标签
txbDir 当前文件路径
(3)按钮名称
名称说明参数规格btnOpenXls 打开excel文件
btnSaveXls 保存excel文件
btnSaveAsXls 另存为excel文件
btnbtnReadXls 读取文件当前路径
(4)计时器名称
名称说明
TimerData 数据更新计数器
(5)对话框名称
名称说明
commDlg 打开、保存等对话框控件
(6)列表框
名称说明
ListXls 显示Excel表内容
2.3 程序编写
(1)控件和应用准备
添加commondialog控件
添加MicroExcel引用
(2)设置全局变量
Dim xlsApp As Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet
注:未添加MicroExcel引用将编译报错
(3)打开文件按钮,弹出“打开对话框”,选择文件后把路径名称显示在“路径文本框”中P r i v a t e S u b b t n O p e n X l s_C l i c k()
c o m m D l g.S h o w O p e n
t x b D i r.T e x t=c o m m D l g.F i l e N a m e
E n d S u b
(4)读取打开的路径文件,将一列数据显示到listbox列表中
'启用x l s
S e t x l s A p p= C r e a t e O b j e c t("E x c e l.A p p l i c a t i o n") '应用程序对象实例
x l s A p p.V i s i b l e=F a l s e’设置操作过程中E x c e l表格不可见
'打开文件
S e t x l s B o o k= x l s A p p.W o r k b o o k s.O p e n(c o m m D l g.F i l e N a m e)    S e t x l s S h e e t= x l s B o o k.W o r k s h e e t s("S h e e t1")
'循环将E x c e l第一列显示到l i s t B o x,直到无数据
D i m i,j A s I n t e g e r
i=1
j=1
D o W h i l e x l s S h e e t.C e l l s(i,j)<>""
L i s t X l s.A d d I t e m(x l s S h e e t.C e l l s(i, 1))
i=i+1
'j=j+1
L o o p
'解除对所打开的e x c e l的锁定
x l s B o o k.C l o s e(T r u e)'上面的代码出错就不执行它了x l s A p p.Q u i t'同上,执行不到此句,E X C E L可能留在进程中,o f f i c e打开路径E x c e l
’时出现锁定提示
S e t x l s B o o k=N o t h i n g’释放b o o k绑定S e t x l s A p p=N o t h i n g’释放a p p l i c a t i o n绑定
’以下为异常处理
e r r:
I f e r r.N u m b e r>0T h e n
I f N o t(x l s B o o k I s N o t h i n g)T h e n
x l s B o o k.Q u i t
E n d I f
I f N o t(x l s A p p I s N o t h i n g)T h e n
x l s A p p.Q u i t
E n d I f
E n d I f
注:要解决的问题是如何把第二列、第三列等对应显示到listBox中。
(5)点击“生成图表”按钮,加载的Excel自动绘制散点平滑曲线图。
’把当前获取的Excel加载到全局声明变量
S e t x l s A p p= C r e a t e O b j e c t("E x c e l.A p p l i c a t i o n") '应用程序对象实例
'打开路径文本显示的文件,建议进行扩展名检查,保证是.x l s文件
S e t x l s B o o k= x l s A p p.W o r k b o o k s.O p e n(t x b D i r.T e x t)
S e t x l s S h e e t= x l s B o o k.W o r k s h e e t s("S h e e t1")
’定义并添加图表
textbox控件边框设置
Dim xlsChart As Excel.Chart
Set xlsChart = xlsApp.Charts.Add ’返回添加的新图表
With xlsChart
.ChartType = xlXYScatterSmooth '选择带平滑线和数据标记的散点图’选择数据源,当前工作薄的A2:C11,共3列10行,列为坐标        .SetSourceData Source:=xlsSheet.Range("A2:C11"), PlotBy:=xlColumns ’曲线图名称,温度和电容
.SeriesCollection(1).Name = "=""温度"""
.SeriesCollection(2).Name = "=""电容"""
.Location Where:=xlLocationAsNewSheet ’添加位置为新图表
.HasTitle = True
.ChartTitle.Characters.Text = "温度电容图"
’有X轴,为时间
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "时间"
’有Y轴,为温度/电容
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "温度/电容"
End With
3.BUG分析
(1)为选择打开文件,直接点击“读取当前文件”按钮,将弹出异常。
4.关注
(1)Excel.Application.Visualble = true 表示在操作指定excel时会弹出表格,一闪而过;否则不会弹出。
(2)打开了路径Excel后,Excel应用程序(E x c e l.A p p l i c a t i o n)、Excel 路径文件(E x c e l.W o r k b o o k)、Excel工作簿(E x c e l.W o r k s h e e t),将加载对应的程序、文件和工作资源。如果操作完成后没有释放,它们仍将在进程中运行,导致无法用office软件打开路径文件,提示“已经被其他应用程序锁定”。
(3)With  ……  End With语句块,是选中对象,然后用.**即可对选中对象操作,这样可提高宏运行效率。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。