MSDN上关于操作EXCEL的内容非常全面,可是CSDN论坛上问这类问题的还是很多,而且大多回复多是采用访问EXCEL对象的CELLS接口来实现读写的,这样每处理一下数据都要访问一下CELLS,效率不高。其实MSDN上有更高效的方法,就是整体读入EXCEL指定区域相关内容到数组和将数组整体写入EXCEL指定象区域,这样读写都是一次性访问EXCEL相关对象,和前一种方法相比,整体效率提升非常大。下面是简单的示例代码:


     ' 本例来自论坛提问,因为写好这个代码时,该贴已结,所以放到这儿做个备忘
     ' 问题如下:

     ' EXCEL内容如下:
     '        A列
     ' 1  【题 名】论树立科学发展观,提升企业技术创新能力
     ' 2  【作 者】黄海
     ' 3  【机 构】不详
     ' 4  【刊 名】交通世界.2006(10B).-78-79
     ' 5
     ' 6
     ' 7
     ' 8
     ' 9  【题 名】畜牧业发展与科学技术
     ' 10 【作 者】段诚中
     ' 11 【机 构】四川省畜牧科学研究院研究员
     ' 12 【刊 名】农村养殖技术.2006(18).-5-5
     ' 13
     ' 14
     ' 15
     ' 16
     ' 17 【题 名】加快技术创新步伐 振兴纺织机械制造业
     ' 18 【作 者】无
     ' 19 【机 构】中国纺织机械器材工业协会, 100742
     ' 20 【刊 名】纺织机械.2006(5).-2-9

     ' 如上所写 , 在A列中, 有2000多个这样的格式数据
     ' 现在的目的是想把A列数据通过vba或函数,提取数据成为按列拆分.

     ' b                        c         d                            e
     ' 题名                     作者      机构                         刊名
     ' 论树立科学...            黄海      不详                         交通世界.2006(10B).-78-79
     ' 畜牧业发展与科学技术     段诚中    四川省畜牧科学研究院研究员   农村养殖技术.2006(18).-5-5
    
     ' 各位大哥怎么实现.跪地求,项目紧!!

  ' excel对象
     Dim  oExcel  As   Object
     Dim  oBook  As   Object
     Dim  oSheet  As   Object
     Dim  oRange  As   Object

     Dim  arrGet  As  Variant     ' 读出EXCEL的数组
     Dim  arrPut  As  Variant     ' 写入EXCEL的数组
     Dim  LastRow  As   Integer     ' 最后一行
     Dim  r  As   Integer , c  As   Integer
     Dim  row  As   Integer
    
On   Error   GoTo  App_Err:

     Set  oExcel  =   CreateObject ( " Excel.Application " )
     Set  oBook  =  oExcel.Workbooks.Open( " C: est.xls " )
     Set  oSheet  =  oBook.Worksheets( 1 )
    oSheet.Activate
    
     ' 确定最后一行
     Const  xlCellTypeLastCell  =   11
     Set  oRange  =  oSheet.UsedRange
    oRange.SpecialCells(xlCellTypeLastCell).Activate
    LastRow  =  oExcel.ActiveCell.row  +   4
     ' 将内容读入数组
     ReDim  arrGet( 1   To  LastRow,  1 )
    arrGet  =  oSheet.Range( " A1 " ).Resize(LastRow,  1 )
     ' 拆分内容,并将内容读入另一数组
     ReDim  arrPut( 1   To  LastRow  /   8   +   1 ,  1   To   4 )
    arrPut( 1 ,  1 )  =   " 题名 "
    arrPut( 1 ,  2 )  =   " 作者 "
    arrPut( 1 ,  3 )  =   " 机构 "
    arrPut( 1 ,  4 )  =   " 刊名 "
    row  =   2
     For  r  =   1   To  LastRow  Step   8
         For  c  =   0   To   3
            arrPut(row, c  +   1 )  =   Split (arrGet(r  +  c,  1 ),  " 】 " )( 1 )
         Next  c
        row  =  row  +   1
     Next  r
     ' 写入表格
    oSheet.Range( " B1 " ).Resize(LastRow  /   8   +   1 ,  4 ).Value  =  arrPut
    oBook.Save
    
     MsgBox   " ok "
    oBook.Close
App_Exit:
     Set  oSheet  =   Nothing
     Set  oBook  =   Nothing
    oExcel.Quit
     Set  oExcel  =   Nothing
     Exit Sub
App_Err:
     MsgBox  Err.Description
     Resume  App_Exit

End Sub

注:也可用如下方式获取以使用的行和列:
    r = oSheet.UsedRange.Cells.Rows.Count
    c = oSheet.UsedRange.Cells.Columns.Count

VB读写EXCEL的小技巧相关推荐

  1. 未来教育计算机二级Excel解析,Excel操作小技巧,助你学好计算机二级office!

    原标题:Excel操作小技巧,助你学好计算机二级office! Office考试中最难的是什么?当然是Excel函数啊! 小编辛苦整理了excel10大懒人技巧,让你考试速提分!还不赶紧收藏起来 一. ...

  2. 【EXCEL分列小技巧:按特殊符号分列】

    EXCEL分列小技巧:按特殊符号分列 这种格式,变为下面这种格式↓ 第一步 第二步 第三步 预览,加完成 搞定

  3. excel使用小技巧-冻结窗格

    excel使用小技巧-冻结窗格 冻结窗格有三种形式可用: 1.冻结窗格:既冻结选中单元格的上方和右方 注:冻结部分不会随滚动条的拖动,被数据覆盖. 2.冻结首行:故名思意既冻结整个单元格的第一行 3. ...

  4. EXCEL/WPS小技巧(自动填充排序,身份证生日号码的提取)

    EXCEL/WPS小技巧(自动填充排序,身份证生日号码的提取) Excel/wps的自动填充排序 方法一 方法二 身份证生日号码的提取 Excel/wps的自动填充排序 方法一 Excel和wps的操 ...

  5. EXCEL常用小技巧系列01----排名

    EXCEL常用小技巧系列01----排名 在工作中,时常需要对数据进行各种方式的排名,以下总结几种常用的排名方式: 一:有相同数字时,显示同一排名且下一排名不连续 公式:=SUMPRODUCT((数据 ...

  6. 【word】和【excel】小技巧总结

    作为测试人员,每天也要面对不同的文档,不同文档样式要求也就不一样,所以此篇博客就是总结文档中的小技巧,以备不时之需. 一.删除多余页眉 以word2007为例: 1.选择想要删除的页眉所在页,点击上方 ...

  7. 12个Excel实用小技巧

    以Excel表格2016版本为例给大家整理了14个非常实用简单的Excel小技巧,GIF动图演示.文字详细描述,生动形象直观,学会了可有效提高工作效率. 技巧一:快速选取表格某些列 如下图所示,选取E ...

  8. 5个Excel常用小技巧,分分钟提升工作效率

    点赞再看,养成习惯:十年之计,莫如树木. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文 GitHub https://github.com/hugogoos/Excel 已收录,包含Ex ...

  9. 6个Excel使用小技巧

    Excel是大家熟悉不过的文件格式,今天和大家分享几个使用excel过程中的小技巧,希望能够帮助到大家. 技巧一:求和快捷键 同时按下Alt和=,能够快速调用出SUM函数不需要键盘鼠标来回切换 技巧二 ...

最新文章

  1. 如何在C#中用单个空格替换多个空格?
  2. MySQL学习笔记(6)之设计范式
  3. 十二届蓝桥杯C++ 1月 中 高级组试题 第4题 病毒繁殖
  4. Linux网络实时流量监测工具iftop的安装使用
  5. es统计mysql 报表_Elasticsearch(简称ES)实现日报表、月报表、年报表统计,没数据补0...
  6. java fileinputstream 安全管理器校验失败_Spring Boot 如何做参数校验?
  7. 10分钟学会数据库压力测试
  8. python第一课教案_Python学习第一课
  9. matlab的findpeak 极点查找
  10. FFmpeg h264转h265命令(九)
  11. deeplin显示安装空间不够_太实用了!这种冷门的显示器支架可帮了大忙了
  12. 桌面高效便捷的多窗口调整管理工具 - AquaSnap
  13. 万字干货,交互设计精髓105条设计原则(附中英PDF资料)
  14. 傲腾内存 可以用ghost系统_光影精灵傲腾版笔记本安装win10系统操作教程
  15. 记一次Python爬取某网站公众号二维码的过程
  16. 面试常见问题之OWASP top10
  17. C语言(二):数据类型
  18. WebPack的安装及使用
  19. filebrowser实现私有网盘
  20. 竟然如愿让我拿到诸多大厂offer(头条,PDD,Alibaba)-来自Alibaba的Java面试指南,

热门文章

  1. HTML提供了许多标记,HTML提供了许多标记,下列选项中,属于HTML标记的是
  2. C# 大帧头数据转化 备忘
  3. R语言ggplot2绘制分组箱型图和分组柱状图
  4. 计算机设计大赛科学,2018年中国大学生计算机设计大赛举行
  5. linux 内核 发送数据,使用Linux内核模块发送的UDP数据包不使用套...
  6. Hbase数据恢复方案
  7. Kolin之面向对象-1
  8. uniapp实现unipush推送功能
  9. 9个最佳的多用途Android应用模板
  10. C4D2023取消永久许可?Maya推出精简版?你不能错过的7个CG软件资讯...