vb操作excel大全.docx
《vb操作excel大全.docx》由会员分享,可在线阅读,更多相关《vb操作excel大全.docx(13页珍藏版)》请在冰豆网上搜索。
vb操作excel大全
VB操纵EXCEL大全
2008-02-2611:
07
范例一
OptionExplicit
PrivateSubCommand1_Click()
DimxlAppAsExcel.Application
DimxlBookAsExcel.Workbook
DimxlCharAsNewExcel.Chart
DimxlSheetAsNewExcel.Worksheet
'建立需要的对象
SetxlApp=NewExcel.Application
SetxlApp=CreateObject("Excel.Application")
SetxlBook=xlApp.Workbooks.Open("F:
\BOOK1.xls")
SetxlSheet=xlBook.Worksheets
(1)
'建立Chart对象
SetxlChar=xlApp.Charts.Add()
xlChar.ChartType=xlLineMarkers
CallxlChar.SetSourceData(xlSheet.Range("A1:
E7"),xlColumns)'原数据
ActiveChart.LocationWhere:
=xlLocationAsObject,Name:
="Sheet1"
ActiveChart.HasLegend=True
ActiveChart.Legend.Select
Selection.Position=xlRight
'选中建立的ChartObjects对象
ActiveSheet.ChartObjects("图表1").Activate
ActiveChart.PlotArea.Select
ActiveChart.Legend.Select
'删除退出(&X)菜单
DimiAsInteger
Fori=1ToxlApp.CommandBars("File").Controls.Count
Debug.PrintxlApp.CommandBars("File").Controls(i).Caption
IfLeft$(xlApp.CommandBars("File").Controls(i).Caption,2)="关闭"Then
xlApp.CommandBars("File").Controls(i).Visible=False'Delete
ExitFor
EndIf
Next
'显示EXCEL
xlApp.Visible=True
EndSub
范例二
RichTextBox1
DimxlAppAsExcel.Application
SetxlApp=NewExcel.Application
----然后,可以用这些变量来访问在EXCEL应用程序中的从属对象、以及这些对象的属性和方法。
例如:
SetxlApp=CreateObject("Excel.Application")
‘激活EXCEL应用程序
xlApp.Visible=False‘隐藏EXCEL应用程序窗口
SetxlBook=xlApp.Workbooks.Open(strDestination)
‘打开工作簿,strDestination为一个EXCEL报表文件
SetxlSheet=xlBook.Worksheets
(1)
‘设定工作表
============================================================
VB借助EXCEL实现表格设计
1、定义EXCEL对象变量
dimxasexcel.application
2、VB中,启动EXCEL
setx=createobject("excel.application")
3、新建一个EXCEL工作簿
x.workbooks.add
4、选定工作表1
setxsheet=xbook.worksheets
(1)
5、指定单元格,并赋值
xsheet.cell(1,1)=ret.fields(0)
6、指定EXCEL列宽
xsheet.column
(1).columnwidth=10
7、RANGE()函数,选定单元格区域
range(cells(1,1),cells(10,20))
8、设置EXCEL字体
xsheet.range(cells(1,1),cells(10,20)).font.name="黑体"
9、设置EXCEL为粗体
xsheet.range(cells(1,1),cells(10,20)).fontbold=true
10、设置EXCEL表格边框
xsheet.range(cells(1,1),cells(10,20)).borders.linestyle=xlcontinuous
11、运行时,显示EXCEL或隐藏EXCEL
x.visible=true
12、保存工作簿
xbooksave
13、退出EXCEL
x.quit
14、交还控制权给EXCEL
setx=nothing
15、打印EXCEL表
x.active.window.selectedsheets.printoutcopies=numcopies
16、退出EXCEL时,不出现保存提示。
x.displayalerts=false
17、怎样运用EXCEL公式?
x.range("A3").formula="=max(A1,A2)"
18、EXCEL代码获取技巧
打开EXCEL中的工具----宏----录制新宏,然后进行手工操作,结束后把所录的宏代码贴进你的VB程序就行。
19、合并单元格代码
x.range("A2:
A5").inergecells=true
20、自动调整列宽代码
x.column("A:
I").autofit'a到I列自动调整列宽
21、文本自动换行代码
x.rows(3).wraptext=true
22、设置字体颜色
x.rows
(1).font.colorindex=4
23、打印预览代码
x.worksheets.printpreview
24、打开EXCEL文件
x.workbooks.openfilename:
="c:
\mydocuments\myvb\lgx\dy.xls"
======================================================================================================
如何用VB控制EXCEL生成报表
贾利冬()
做为一种简捷、系统的Windows应用程序开发工具,VisualBasic6具有强大的数据处理功能,提供了多种数据访问方法,可以方便地存取MicrosoftSQLServer、Oracle、XBase等多种数据库,被广泛应用于建立各种信息管理系统。
但是,VB缺乏足够的、符合中文习惯的数据表格输出功能,虽然使用CrystalReport控件及CrystalReports程序可以输出报表,但操作起来很麻烦,中文处理能力也不理想。
Excel作为Micorsoft公司的表格处理软件在表格方面有着强大的功能,我们可用VB5编写直接控制Excel操作的程序,方法是用VB的OLE自动化技术获取Excel2000的控制句柄,从而直接控制Excel2000的一系列操作。
下面给出一个实例:
首先建立一个窗体(FORM1)在窗体中加入一个DATA控件和一按钮,
引用MicrosoftExcel类型库:
从"工程"菜单中选择"引用"栏;
选择MicrosoftExcel9.0ObjectLibrary;
选择"确定"。
然后在FORM的LOAD事件中加入:
PrivateSubForm_Load()
'数据库及表可以另选,本文以Nwind.mdb为例
Data1.DatabaseName="C:
\ProgramFiles\MicrosoftVisualStudio\VB98\Nwind.mdb"
Data1.RecordSource="Customers"
Data1.Refresh
EndSub
在按钮的CLICK事件中加入
PrivateSubCommand1_Click()
DimIrow,IcolAsInteger
DimIrowcount,IcolcountAsInteger
DimFieldlen()'存字段长度值
DimxlAppAsExcel.Application
DimxlBookAsExcel.Workbook
DimxlSheetAsExcel.Worksheet
SetxlApp=CreateObject("Excel.Application")
SetxlBook=xlApp.Workbooks.Add
SetxlSheet=xlBook.Worksheets
(1)
WithData1.Recordset
.MoveLast
If.RecordCount<1Then
MsgBox("Error没有记录!
")
ExitSub
EndIf
Irowcount=.RecordCount'记录总数
Icolcount=.Fields.Count'字段总数
ReDimFieldlen(Icolcount)
.MoveFirst
ForIrow=1ToIrowcount+1
ForIcol=1ToIcolcount
SelectCaseIrow
Case1'在Excel中的第一行加标题
xlSheet.Cells(Irow,Icol).Value=.Fields(Icol-1).Name
Case2'将数组FIELDLEN()存为第一条记录的字段长
IfIsNull(.Fields(Icol-1))=TrueThen
Fieldlen(Icol)=LenB(.Fields(Icol-1).Name)
'如果字段值为NULL,则将数组Filelen(Icol)的值设为标题名的宽度
Else
Fieldlen(Icol)=LenB(.Fields(Icol-1))
EndIf
xlSheet.Columns(Icol).ColumnWidth=Fieldlen(Icol)
'Excel列宽等于字段长
xlSheet.Cells(Irow,Icol).Value=.Fields(Icol-1)
'向Excel的CellS中写入字段值
CaseElse
Fieldlen1=LenB(.Fields(Icol-1))
IfFieldlen(Icol)xlSheet.Columns(Icol).ColumnWidth=Fieldlen1
'表格列宽等于较长字段长
Fieldlen(Icol)=Fieldlen1
'数组Fieldlen(Icol)中存放最大字段长度值
Else
xlSheet.Columns(Icol).ColumnWidth=Fieldlen(Icol)
EndIf
xlSheet.Cells(Irow,Icol).Value=.Fields(Icol-1)
EndSelect
Next
IfIrow<>1Then
IfNot.EOFThen.MoveNext
EndIf
Next
WithxlSheet
.Range(.Cells(1,1),.Cells(1,Icol-1)).Font.Name="黑体"
'设标题为黑体字
.Range(.Cells(1,1),.Cells(1,Icol-1)).Font.Bold=True
'标题字体加粗
.Range(.Cells(1,1),.Cells(Irow,Icol-1)).Borders.LineStyle=xlContinuous
'设表格边框样式
EndWith
xlApp.Visible=True'显示表格
xlBook.Save'保存
SetxlApp=Nothing'交还控制给Excel
EndWith
EndSub
本程序在中文Windows98、中文VB6下通过。
===================================================
VB5.0调用Office97技巧
VisualBasic5.0具有简单、易学等特点,深受初学者的欢迎,但也有一些不如人意的地方。
例如,不能像Word97那样进行拼写检查,不能像Excel97那样具有很多的函数。
如果我们能将Word97和Excel97的功能使用在VisualBasic5.0中,就可以使VB达到锦上添花的目的。
我们知道所有Office97应用程序都提供了ActiveX对象,我们可以在VisualBasic5.0中使用它们。
调用Word97
要想在VB中调用Word97,首先要打开VB的"工程"菜单中的"引用"项目,并在该项目对话框中选定"MicrosoftWord8.0ObjectLibrary"就可以了。
下面我们举例说明调用Word97中的"拼写检查"和"单词统计"功能。
首先新建一个工程并在窗体上放置一个TextBox控件和两个CommandButton控件,然后添入如下的代码:
OptionExplicit
DimDocAsNewDocument
DimVisiAsBoolean
图1调用Word97
′拼写检查
PrivateSubCommand1-Click()
Form1.Caption="拼写检查"
Doc.Range.Text=Text1
′确定范围
Doc.Application.Visible=True′将Word97变为可见
AppActivateDoc.Application.Caption
′激活Word97
Doc.Range.CheckSpelling
′拼写检查
Text1=Doc.Range.Text
Text1=Left(Text1,Len(Text1)-1)
AppActivateCaption
EndSub
′统计单词数
PrivateSubCommand2-Click()
DimDlgAsWord.Dialog
Doc.Range=Text1.Text
SetDlg=Doc.Application.Dialogs
(wdDialogDocumentStatistics)
Dlg.Execute′统计单词和字符
Form1.Caption="单词数:
"&Str(Dlg.Words)&"词"
&Str(Dlg.Characters)&"字符"′显示统计结果
EndSub
Top
范例三
PrivateSubForm-Load()
Form1.Caption="调用Word97"
Text1.Text=""
Command1.Caption="拼写检查"
Command2.Caption="统计单词"
′使应用程序可见
Visi=Doc.Application.Visible
EndSub
′关闭应用程序
PrivateSubForm-Unload(CancelAsInteger)
IfVisiThen′关闭文件
Doc.Closesavechanges:
=False
Else
Doc.Application.Quitsavechanges:
=False′关闭Word97
EndIf
EndSub
运行中的窗体如图1所示。
图2调用Excel97
调用Excel97
使用ExcelSheet对象的技术可以处理可变数量的数据,并将结果最后送到你的VisualBasic应用程序中。
例子如下:
新建一个工程并在新建的窗体上放置两个TextBox控件和一个CommandButton控件及六个Label控件。
建设中的窗体如图2所示。
程序代码如下:
OptionExplicit
PrivateSubCommand1-Click()
DimxObjectAsObject
′调用Excel97
SetxObject=CreateObject("Excel.Sheet")
SetxObject=xObject.Application.ActiveWorkbook.ActiveSheet
xObject.Range("A1").Value=Text1.Text′将数值送入Excel97的A1单元格
xObject.Range("A2").Value=Text2.Text′将数值送入Excel97的A2单元格
xObject.Range("A3").Formula="=MAX(A1,A2)"′将最大值送入A3单元格
xObject.Range("A4").Formula="=ATAN(A1/A2)*180/PI()"′将反正切值送入A4单元格
′显示计算的结果
Label1.Caption=xObject.Range("A3").Value
Label2.Caption=xObject.Range("A4").Value
SetxObject=Nothing
EndSub
PrivateSubForm_Load()
Text1.Text=""
Text2.Text=""
Label1.Caption=""
Label2.Caption=""
EndSub
该程序的作用是:
首先在两个文本框(Text1和Text2)输入数值并分别将输入的数值送入Excel97的"A1"和"A2"单元格中,然后用Excel97中的"Max()"函数将计算的结果送入"A3"单元格中;用反正切函数"ATAN()"进行计算并将结果送入"A4"单元格中,最后输出。
===================================================
浅谈Excel的VB编程
Excel是一个优秀的电子表格软件,如果你编的程序需要以报表的形式显示最终结果,它会是个不错的选择。
你可以通过VB控制Excel显示数据表格。
如果你不愿意深入了解Excel这些琐碎的细节,也不是没有权宜之计:
你可以打开Excel中的工具→宏→录制新宏,然后进行手工操作,结束后把所录的宏代码贴进你的VB程序就行。
这样得到的程序一般都能正常运行,但其中的宏代码往往不够简洁,效率和可读性都不高。
----Excel编程碰到的第一个问题是表头。
有时表头的形式比较复杂,需要横向或纵向合并单元格。
请放心,只要没有斜杠,Excel都能应付得了。
----例如合并A2~A5这4个单元格,你录制的宏代码会是这样:
Range("A2:
A5").Select
WithSelection
.HorizontalAlignment=xlCenter
.VerticalAlignment=xlBottom
.WrapText=False
.Orientation=0
.AddIndent=False
.ShrinkToFit=False
.MergeCells=False
EndWith
Selection.Merge
----而自己编程只要一句Range.("A2:
A5").mergecells=True就可以解决问题。
----表头形式定了,再就是表头的内容。
如果单元格中的文本长度超过了列宽,往往只能显示部分内容,行尾那一格的内容则会"越境"进入右边那个空白单元格,很不美观。
这个问题可以通过在程序中设置列宽加以解决。
----Columns(14).columnwidth=12'设置第14列列宽为12(缺省列宽为8.38)
----如果你不愿意劳神去逐列估计实际所需的列宽,干脆来一行
----Columns("a:
i").autofit'a到i列自动调整列宽
----让Excel随机应变吧。
----但也许你不喜欢这种方法,认为表头撑大了列宽,弄得浏览一张小表格还得向右滚动,太不方便了。
要是能保持默认列宽,让文本自动换行就好了。
没问题,Excel包你满意。
----Rows(3).WrapText=True'让第三行各单元格中的文本自动换行
----不过你最好再加一句Rows(3).VerticalAlignment=xlTop让表头自动向上对齐,这样比较符合习惯。
----你还可以给表头打上底色,让你的读者不至于看了打哈欠。
----Rows
(2).Interior.ColorIndex=5'设置第2行底色