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查看次数:326 vb6.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数据类型概述以下表格显示所支持的数据类型,以及存储空间大小与范围。数据类型ByteBooleanIntegerLong(长整型)Single(单精度浮点型)Double(双精度浮点型)Currency(变比整型)DecimalDateObjectString(变长)String(定长)Variant(数字)Variant(字符)用户自定义(利用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函数是提高程序运行速度的极度有效的方法。如求平均工资的例子: ForEachcIn Worksheet(1).Range(″A1:A1000″) TotalValue=TotalValue+c.Value Next AverageValue=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″ ... EndWith 2.使用对象变量。 如果你发现一个对象引用被多次使用,则你可以将此对象用Set设置为对象变量,以减少对对象的访问。如: Workbooks(1).Sheets(1).Range(″A1″).Value=100 Workbooks(1).Sheets(1).Range(″A2″).Value=200 则以下代码比上面的要快: SetMySheet=Workbooks(1).Sheets(1) MySheet.Range(″A1″).Value=100 MySheet.Range(″A2″).Value=200 3.在循环中要尽量减少对象的访问。 Fork=1To1000 Sheets(″Sheet1″).Select Cells(k,1).Value=Cells(1,1).Value Nextk 则以下代码比上面的要快: SetTheValue=Cells(1,1).Value Sheets(″Sheet1″).Select Fork=1To1000 Cells(k,1).Value=TheValue Nextk 方法3:减少对象的激活和选择 如果你的通过录制宏来学习VBA的,则你的VBA程序里一定充满了对象的激活和选择,例如Workbooks(XXX).Activate、Sheet