VB中操作Excel的一般做法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

VB中操作Excel的一般做法(读取)-中国WEB开发者网络()--技术教程()---VB中操作Excel的一般做法(读取)()--作者:未知--发布日期:2006-02-071、定义Excel操作变量DimobjExcelFileAsExcel.ApplicationDimobjWorkBookAsExcel.WorkbookDimobjImportSheetAsExcel.Worksheet2、打开Excel进程,并打开目标Excel文件SetobjExcelFile=NewExcel.ApplicationobjExcelFile.DisplayAlerts=FalseSetobjWorkBook=objExcelFile.Workbooks.Open(strFileName)SetobjImportSheet=objWorkBook.Sheets(1)3、获取Excel有效区域的行和列数intLastColNum=objImportSheet.UsedRange.Columns.CountintLastRowNum=objImportSheet.UsedRange.Rows.Count4、逐行读取Excel中数据由于前两行为Header部分,所以需要从第三行读取如果第1到第10个单元格的值均为空或空格,则视为空行ForintCountI=3TointLastRowNum''CheckifEmptyDataRowblnNullRow=TrueForintI=1To10IfTrim$(objImportSheet.Cells(intCountI,intI).Value)ThenblnNullRow=FalseEndIfNextintI若不是空行,则进行读取动作,否则继续向后遍历Excel中的行IfblnNullRow=FalseThen获取单元格中的数据,做有效性Check,并将合法数据创建为实体存入对象数组中objImportSheet.Cells(intCountI,1).Value……EndIfNextintCountI5、退出Excel进程,并关闭Excel相关操作对象objExcelFile.QuitSetobjWorkBook=NothingSetobjImportSheet=NothingSetobjExcelFile=Nothing【VB源码】vb6.0中读取excel中的数据来源:初月岛发布时间:2010-03-08查看次数:326vb6.0中读取excel中的数据,并把数据填写到vb中的textbox上实例:PrivateSubCommand3_Click()DimConnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimiAsIntegerDimsqlAsString'OnErrorResumeNextstrName=App.Path&\\book.xls'EXCEL文件名strSheetName=sheet1'EXCEL表名Conn.OpenProvider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;DataSource=&strName&;ExtendedProperties='Excel8.0;HDR=Yes''连接EXCEL文件sql=select.*from[&strSheetName&$]'打开EXCEL表rs.Opensql,Conn,3,3MsgBoxrs.RecordCount'显示表里的记录数DoUntilrs.EOFFori=0Tors.Fields.Count-1'读一行数据List1.AddItemrs.Fields.Item(i).Name'读出数据,添加到list1里IfNotIsNull(rs.Fields.Item(i).Value)ThenList2.AddItemrs.Fields.Item(i).ValueElsers.Updaters.Fields.Item(i).Value=i'peter&irs.UpdateEndIfNextirs.MoveNextLooprs.Close'关闭数据集Conn.Close'关闭对象EndSubVBA数据类型概述以下表格显示所支持的数据类型,以及存储空间大小与范围。数据类型存储空间大小范围Byte1个字节0到255Boolean2个字节True或FalseInteger2个字节-32,768到32,767Long(长整型)4个字节-2,147,483,648到2,147,483,647Single(单精度浮点型)4个字节负数时从-3.402823E38到-1.401298E-45;正数时从1.401298E-45到3.402823E38Double(双精度浮点型)8个字节负数时从-1.79769313486232E308到-4.94065645841247E-324;正数时从4.94065645841247E-324到1.79769313486232E308Currency(变比整型)8个字节从-922,337,203,685,477.5808到922,337,203,685,477.5807Decimal14个字节没有小数点时为+/-79,228,162,514,264,337,593,543,950,335,而小数点右边有28位数时为+/-7.9228162514264337593543950335;最小的非零值为+/-0.0000000000000000000000000001Date8个字节100年1月1日到9999年12月31日Object4个字节任何Object引用String(变长)10字节加字符串长度0到大约20亿String(定长)字符串长度1到大约65,400Variant(数字)16个字节任何数字值,最大可达Double的范围Variant(字符)22个字节加字符串长度与变长String有相同的范围用户自定义(利用Type)所有元素所需数目每个元素的范围与它本身的数据类型的范围相同。注意任何数据类型的数组都需要20个字节的内存空间,加上每一数组维数占4个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。例如,以4个2字节之Integer数据元所组成的一维数组中的数据,占8个字节。这8个字节加上额外的24个字节,使得这个数组所需总内存空间为32个字节。包含一数组的Variant比单独的一个数组需要多12个字节如何在Excel里使用定时器如何在Excel里使用定时器用过Excel97里的加载宏定时保存吗?可惜它的源程序是加密的,现在就上传一篇介绍实现它的文档。在Office里有个方法是application.ontime,具体函数如下:expression.OnTime(EarliestTime,Procedure,LatestTime,Schedule)如果想进一步了解,请参阅Excel的帮助。这个函数是用来安排一个过程在将来的特定时间运行,(可为某个日期的指定时间,也可为指定的时间段之后)。通过这个函数我们就可以在Excel里编写自己的定时程序了。下面就举两个例子来说明它。1.在下午17:00:00的时候显示一个对话框。SubRun_it()Application.OnTimeTimeValue(17:00:00),Show_my_msg'设置定时器在17:00:00激活,激活后运行Show_my_msg。EndSubSubShow_my_msg()msg=MsgBox(现在是17:00:00!,vbInformation,自定义信息)EndSub2.模仿Excel97里的自动保存宏,在这里定时5秒出现一次Subauto_open()MsgBox欢迎你,在这篇文档里,每5秒出现一次保存的提示!,vbInformation,请注意!Callruntimer'打开文档时自动运行EndSubSubruntimer()Application.OnTimeNow+TimeValue(00:00:05),saveit'Now+TimeValue(00:15:00)指定在当前时间过5秒钟开始运行Saveit这个过程。EndSubSubSaveIt()msg=MsgBox(朋友,你已经工作很久了,现在就存盘吗?&Chr(13)_&选择是:立刻存盘&Chr(13)_&选择否:暂不存盘&Chr(13)_&选择取消:不再出现这个提示,vbYesNoCancel+64,休息一会吧!)'提示用户保存当前活动文档。Ifmsg=vbYesThenActiveWorkbook.SaveElseIfmsg=vbCancelThenExitSubCallruntimer'如果用户没有选择取消就再次调用RuntimerEndSub以上只是两个简单的例子,有兴趣的话,可以利用Application.Ontime这个函数写出更多更有用的定时程序。提高Excel中VBA的效率提高Excel中VBA的效率由于MicrosoftOffice办公套件的广泛应用,以及该软件版本的不断提升,功能不断完善,在Office办公套件平台上开发出的的VBA应用程序越来越多,而VBA是一种宏语言,在运行速度上有很大的限制。因此VBA编程的方法直接关系到VBA程序运行的效率,本文列举了一些提高VBA程序运行效率的方法。方法1:尽量使用VBA原有的属性、方法和Worksheet函数由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对它们不全部了解,这就产生了编程者经常编写与Excel对象的属性、方法相同功能的VBA代码段,而这些代码段的运行效率显然与Excel对象的属性、方法完成任务的速度相差甚大。例如用Range的属性CurrentRegion来返回Range对象,该对象代表当前区。(当前区指以任意空白行及空白列的组合为边界的区域)。同样功能的VBA代码需数十行。因此编程前应尽可能多地了解Excel对象的属性、方法。充分利用Worksheet函数是提高程序运行速度的极度有效的方法。如求平均工资的例子:ForEachcInWorksheet(1).Range(″A1:A1000″)TotalValue=TotalValue+c.ValueNextAverageValue=TotalValue/Worksheet(1).Range(″A1:A1000″).Rows.Count而下面代码程序比上面例子快得多:AverageValue=Application.WorksheetFunction.Average(Worksheets(1).Range(″A1:A1000″))其它函数如Count,Counta,Countif,Match,Lookup等等,都能代替相同功能的VBA程序代码,提高程序的运行速度。方法2:尽量减少使用对象引用,尤其在循环中每一个Excel对象的属性、方法的调用都需要通过OLE接口的一个或多个调用,这些OLE调用都是需要时间的,减少使用对象引用能加快VBA代码的运行。例如1.使用With语句。Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.Name=″Pay″Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.FontStyle=″Bold″...则以下语句比上面的快WithWorkbooks(1).Sheets(1).Range(″A1:A1000″).Font.Name=″Pay″.FontStyle=″Bold″...EndWith2.使用对象变量。如果你发现一个对象引用被多次使

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功