摘要:VBA作橹葱型ㄓ玫淖远化任务的编程语言之一,主要用来扩展Windows的应用程序功能。基于实际工作项目和需求,重点探索基于VBA的异构数据源自适应读写技术的可行性实施方案,并以实践案例辅以佐证。
关键词:VBA;异构数据源;PPT;自适应读写
中图分类号:TP319
文献标识码: A
文章编号:16727800(2017)004015204
0引言
VBA(Visual Basic for Applications)是微软开发的在其桌面应用程序中执行通用的自动化任务的编程语言,主要用来扩展Windows的应用程序功能。其中,PowerPoint作为Windows的应用软件之一,在教育培训、工作汇报等领域有着举足轻重的地位,通常使用VBA对其进行二次开发[1]。本文主要根据笔者的实际工作项目需求,重点探索基于VBA的异构数据源自适应读写技术的可行性实施方案。
1问题提出 在信息化教学过程中,实用性微课、PPT等是主要的辅助教学资源。其中,PPT因为“简单、实用、高效”的特点,深得教师与学生喜爱。在实际课堂教学中,经常需要实现师生互动,有时还需要实时分析学情,以便及时调整教学策略,提高课堂教学的有效性。如果可以在PPT中附加简易的测验功能,为学情分析提供可靠的数据,将有助于实现解决问题草根化、实现方法平民化,有利于推广与分享。在PPT中实现简易的测验功能,离不开数据读写。其中,如何实现异构数据源的自适应读写,是需要解决的技术问题之一。2基于VBA的常用异构数据源2.1XML XML是一种用于标记电子文件使其具有结构性的标记语言,是保存数据的常用方法之一。它虽然不像Oracle、SQL Server等数据库拥有强大的数据存储和分析能力,但XML文件极其简单,易于被任何应用程序读写。因此,XML文件是各种应用程序之间进行数据传输、交换最常用的格式。2.2XLS(或XLSX) XLS(或XLSX,下文以XLS为例),是一种常用的电子表格格式,可以使用Microsoft Excel打开,其广泛地应用于管理、统计等众多领域,也常用于保存数据。目前,绝大多数应用系统都支持XLS(或XLSX)文件的导入与导出,在办公自动化中发挥着重要作用。2.3TXT TXT是最常见的一种文件格式,在DOS时代的应用就已很多,主要用于保存文本信息(含数据)。它的优势是:体积小、存储简单方便、不会中毒,是计算机和很多移动设备的通用格式。因此,对于小数据量而言,选择TXT进行保存也是一种可行方案。3基于VBA的异构数据源自适应读写技术3.1基本原理
3.1.1开发环境 作为一种编程语言,VBA在Office软件中的应用非常成功,深得开发者与使用者喜爱。在Office软件中基于VBA进行二次开发是一种非常高效的开发手段,例如:基于WORD开发各类自动生成的申报表,基于EXCEL开发各类小型管理系统,基于PPT开发附加于课件的测验系统等[2]。下文以Microsoft Office PowerPoint为开发环境,简述基于VBA的异构数据源自适应读写技术的基本原理与实现方法。
3.1.2基本原理 对于常见的异构数据源XML、XLS、TXT,基于VBA的异构数据源自适应读写技术的基本原理如图1所示。
其中,按异构数据源(XML、XLS、TXT)被笔者课题研究过程中其它应用程序读写的概率决定优先级。
3.1.3自适应选择数据源 在VBA中,主要利用Dir()函数进行判断,然后依据优先级实现自适应读写,其基本原理如图2所示。
通用性示例代码如下:
myselect = 0 If Dir("mytk.xml", vbNormal) "" Then myselect = 1 Else If Dir("mytk.xls", vbNormal) "" Then myselect = 2 Else If Dir("mytk.txt", vbNormal) "" Then myselect = 3 End If End If End If 说明:变量myselect的值决定系统读入的是哪一种数据源,0表示没有合适的数据源,1表示XML,2表示XLS,3表示TXT。3.2基于VBA的读入技术
3.2.1XML文件读入 在VBA中,主要利用MSXML.DOMDocument对象读入XML文件,其基本原理如图3所示。
通用性示例代码如下:
Set objDOM = CreateObject("MSXML.DOMDocument") objDOM.Load ("mytk.xml") objDOM.async = False Set ns1= objDOM.SelectNodes("//tm") For i = 1 To ns.Length mytm(i) = ns1.Item(i - 1).ChildNodes(0).Text Next Set objDOM = Nothing
3.2.2XLS文件读入 在VBA中,主要利用Excel.Application对象读入XLS文件[4],其基本原理如图4所示。
通用性示例代码如下:
Set xlApp = New Excel.Application xlFilePath$ = "mytk.xls" xlApp.Workbooks.Open xlFilePath, , False mylen = 0 i = 2 While (xlApp.Workbooks(1).Sheets(1).Cells(i, 1) "END") mylen = mylen + 1 mytm(mylen) = xlApp.Workbooks(1).Sheets(1).Cells(i, 2) i = i + 1 Wend xlApp.Workbooks.Close Set xlApp = Nothing