利用VBA在Excel和Word中完成复杂的数据引用(2)

来源:网络(转载) 作者:王贵 石仙 发表于:2011-09-19 15:44  点击:
【关健词】VBA编程;数据引用;Excel;Word
axlApp.Workbooks.Open()是一个将工作薄打开的常用语句格式,并将sheet指向了每天的生产日报中名为今日生产日报的工作表,然后将对应单元格的数据提取到当前的数据报表。这里axlBook.Close(False)是一个很重要的语

  axlApp.Workbooks.Open()是一个将工作薄打开的常用语句格式,并将sheet指向了每天的生产日报中名为“今日生产日报”的工作表,然后将对应单元格的数据提取到当前的数据报表。这里axlBook.Close(False)是一个很重要的语句,它作用在于将打开的工作薄关闭,用于防止打开的工作薄过多造成程序积压,最终导致程序运行缓慢或者电脑死机等现象。
  总结以上方法,主要以日期为名称标识,按照“文件夹→文件名→工作薄→工作表→单元格”的顺序依次找到所需要的数据,然后逐个提取并在目标报表的指定单元格输出,完成繁琐、复杂但有规律的数据提取功能。
  2.3 提取B列数据
  B列数据来源于“strdir\Word报表\生产日报yyyymmdd.doc”
  Dim mmWord As Document’定义一个Word的对象类型。
  Dim app As Word.Application’将app指向Word应用程序。
  Set app=CreateObject("Word.application")’新建一个Word.EXE后台实例。
  Fori=0 To ds-1
  n=y*10000+m*100+d+i'随着i的变化,求出对应“yyyymmdd”格式的值。
  strfl=strdir+"Word报表\"+"生产日报"+CStr(n)+".doc"’将strfl指向所要访问的Word文档。
  Set mmWord=app.Documents.Open(strfl)’打开这个文档。
  ActiveWorkbook.Sheets(3).Cells(3+i,3)=mmWord.Tables(2).Cell(3,2)'提取数据。
  mmWord.Close False
  Next
  Set mmWord = Nothing
  app.Quit'关闭Word后台实例。
  CStr()函数用于将数字转换成字符串类型,便于与其他字符类型相加。非常值得一提的是,通常很多方法从Word中把数据提取到Excel中后,所输出的数据都为字符串类型,而且还会有多余的字符一同输出,如“372.64”输出为“372.64”,导致该数据不能直接与其他单元格的数据进行数学运算,所以需要一个附加程序来对其进行转换。仅删除多余字符的方法很多,但处理后数据仍然为字符串类型,不满足要求。相关资料中也很少有提及如何处理这种情况的程序模板,尤其是处理这种数字位数不定,且带有小数点的模板更是少之又少,经过调试和检验,如下程序可以准确无误地将数据中的数字包括小数点,从带有任何附加符号的字符串中提取出来,完全还原数据的本来面目,并且能够直接参与到数学运算中去。具体如下:
  Dim p&,arr ' 定义两个变体型变量
  Set asheet=ActiveWorkbook.Sheets(3)
  arr=Range(asheet.Cells(3,3),asheet.Cells(2+ds,3))'定义arr指向的单元格范围。
  With CreateObject("VBSCRIPT.REGEXP")'建立正则表达式。
  .Global=True'设置全程性质。
  .Pattern="[^.0-9,]" '设置搜索模式,只搜索除小数点及0-9以外的字符。
  For p=1 To UBound(arr)
  arr(p,1)=.Replace(arr(p,1),"")'将搜索到的字符替换为空。
  Next
  End With
  Range(asheet.Cells(3,3),asheet.Cells(2+ds,3))=arr'返回替换后的数值。
  在上述程序中,Vbscript.Regexp对象可以提供简单的正则表达式功能,Global、Pattern为Regexp对象的属性,Global属性的值为True表示搜索应用于整个字符串,否则为False。Pattern属性设置或返回被搜索的正则字符串表达式,它包含对应表格中要搜索的正则表达式字符,[^m-z]表示否定的字符区间,与不在m-z区间的字符匹配。经过上述的方法替换后,所有单元格数据都可以成功转型。
  3 结语[3]
  本程序亮点在于实现繁琐数据的超快捷综合功能,在实际工作中可表现出了非常高的便捷性和实用性,便于广泛的推广和应用,使用者可以在此基础上根据需要利用Excel的标准功能进行任何形式的统计分析,也可以继续利用VBA编写宏实现特定的分析功能,可扩展性和灵活性都非常高,便于后期的持续开发和研究。
  参考文献:
  [1] 刘铭.基于VBA对Excel 2007二次开发应用研究[J].现代电子技术,2010.10:55-57.
  [2] 魏胜利.VBA在Office的办公自动化(OA)及数据通信中的应用[J].办公自动化,2010.02:53-54.
  [3] 刘辉.基于VBA的学生管理信息系统的开发设计[J].电脑编程技巧与维护,2009.16:52-53.
 

(责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)
顶一下
(1)
100%
踩一下
(0)
0%


版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.