这里只讨论通过Activex的方法,因为只有这种方法,才能完全发挥Excel的所有强大的功能。首先,Labview是有一些自带的关于Excel编程的例子的。在find example里search一下,有挺多的,其中有一个叫write table to XL.vi,我最早就是跟着它学的。学了不少,也被误导了很久,其实也不能算误导,只是以前没花时间去研究。最近在用Labview写一个类似ERP一样的软件,接触很多Excel表格,花了些功夫在Excel VBA上,也算比以前有了更多的认识了。先来看看write table to XL这个程序:这个程序的目的就是把一个2维数组(表格)里的内容写到excel里。从上图看,步骤大致是这样的,先打开excel,再打开一个workbook,然后打开worksheet,这实际上跟咱们使用excel的过程是一样的。打开worksheet以后,它还定义了行与列的header,最后才把table里的数据写到excel里。那个cell value子vi,我是从开始就用它,也像这个例子一样,每次写都是套俩for loop,然后往excel里边猛写。最近我才发现,原来有其他的方法,可以一次性写一个二维数组进去,非常快。其实想想也是,不至于会那么傻了。不过也怪VBA里太多的属性和方法,不容易找。前边的打开excel workbook和worksheet我就不说了,例子里就有,可以新建一个workbook和sheet,也可以打开现有的,这个在excelexample.llb里都能找到。(excelexample在哪里?这个……,打开这些个VI,saveas一下就知道在哪里了,ok?)接下来说一下这几天找到的几个方法和属性。首先是Insert,插入行或者列(就像你在excel里右键插入一样,每次只能一行或者一列,要多行的话,只能多来几次了,是这样吧?)在说这个之前,先说下怎么找这些属性和方法,在Excel里,打开VB编辑器(工具-》宏-》VB 编辑器,excel2007是在菜单开发工具下,我用的是Excel2007),打开以后看VB语言参考,重点就是里边的方法和属性,对应在Labview里边的Property和Method节点。help里可以搜索,输入insert,可以看到很多,没办法,不熟悉只能一个一个看咯。看到range.insert方法以后,去和Labview的比对一下。可以看到这就是我们需要的方法了。因为改方法是在Range下的,所以要先打开相应的range,才能用Insert,这就相当于我们在Excel里,需要在哪里插入一样的道理。而Shift参数,看VBA里的描述,它是一个常量,是指定单元格的移动方向,点XLInsertShiftDirection就可以看到这个常量的数值,在这里我就不贴图了。接下来讲最有成就感的发现,如何一次性读取或写入一定范围(若干行若干列)的数据?当然不能用cell.value来写了。有的朋友可能已经发现了。就是用Range Value来实现,这一点在VBA里没有写清楚,它给的例子还是相当于cell value一样,只是一个单元格的值,而实际上,应该是你指定的Range里所有单元格的数值。如上图,range方法包含两个参数cell1和cell2,所以range这个范围就是cell1到cell2的范围,比如B1到C5,这不就是一个2维数组了么?对,就是这样。Range.value有两个,一个get,一个put,对应于读和写。如果cell2不连,那么就是只有一个单元格的值,那么这时候出来的就不是2维数组,而是一个数,连2维数组上去就会出错了。还有其他很多方法和属性,比如合并、拆分单元格,超链接,还有load,saveas之类的,这些都可以去参考VBA,再自己稍加研究,都是能找到的。