logo资料库

罗克韦尔RSVIEW32、SE万能报表开发经验.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
罗克韦尔RSVIEW32、SE万能报表开发经验
罗克韦尔 RSVIEW32、SE 万能报表开发经验 1 引言 随着罗克韦尔工业自动化软件在自动化行业应用日益广泛,工控最终客户对 报表的要求也越来越详细,越人性化。在这篇文章以前,已经有很多工程师、教授 发表了通过 rsview32 和 rsview se 自带的 vba 来实现报表功能,但要求开发工程师 对 vb 有一些基本的了解,用起来复杂,不具有通用、易用性。本文根据实例来演示 自己开发的 vba 万用报表,使读者可以直接上手,不再为报表设计而发愁。 2 应用实例分析 本文以 rsview 32 做演示(rsview se 道理一样)。首先我们要确定将数据记 录存到硬盘哪个分区,例如,我想将数据存储到 d 盘 aaa 文件夹下,那么我们现在 d 盘建立一个 aaa 文件夹,并在文件夹中建立我们的 excel 数据模板,并命名为 model:(如图 1 所示) 图 1 excel 数据模板 模板建立好以后需要设置所需的内容,大家可以根据自己需要任意设置,下 面是举例的设置:(如图 2 所示)
图 2 内容设置 模板建立完毕后保存一下,就可以关上模板。 其次把 rsview32 的 vba 打开,也是最关键的一步,然后黏贴万能代码,看起 来代码很复杂,其实只需要修改 3 步,即可: sub excel() dim xlapp, xlbook, xlsheet as object set xlapp = createobject("excel.application") set xlbook = xlapp.workbooks.open("d:\aaa\model.xls") 这里修改成我们所需的存储存储路径,也是刚才建立模板的路径 set xlsheet = xlbook.worksheets("sheet1") 这里对应的是 excel 中的名称(如图 3 所示)如果默认,无需修改 图 3 excel 中的名称 dim ai as string ai = format(now, "yyyy-mm-dd hh-mm") set a = gtagdb.gettag("zsh\pt120") set b = gtagdb.gettag("zsh\pt130") set d = gtagdb.gettag("zsh\ta")
set e = gtagdb.gettag("zsh\tt120") set f = gtagdb.gettag("zsh\tt130") set g = gtagdb.gettag("zsh\tt121") set h = gtagdb.gettag("zsh\tt131") set i = gtagdb.gettag("zsh\tt001") set l = gtagdb.gettag("zsh\t1") set m = gtagdb.gettag("zsh\t2") set n = gtagdb.gettag("zsh\t3") set o = gtagdb.gettag("zsh\t4") set p = gtagdb.gettag("zsh\t5") set c = gtagdb.gettag("zsh\at100") set k = gtagdb.gettag("zsh\ljxfl") 上面所述的 set *= gtagdb.gettag(*******)是将报表需要的数据建立起来, 例如: set a = gtagdb.gettag("zsh\pt120")这句的意思是需要的 a 数据来源于 rsview32 标记数据库下 zsh 文件夹下的 pt120 标签。如果标签在根目录下,则标签 直接为 pt120。为什么要设置 a b c d?大家看下面就会明白。在这里给大家一点提 示,如果想测试,可以直接用系统自带的标签即可,例如 set a = gtagdb.gettag("system\second") xlapp.activewindow.tabratio = 1 with xlbook.worksheets("sheet1") .cells(2, 9).value = a .cells(3, 9).value = b .cells(4, 9).value = c .cells(2, 4).value = d .cells(4, 4).value = e .cells(6, 4).value = f .cells(3, 4).value = g .cells(5, 4).value = h .cells(10, 9).value = i .cells(7, 4).value = l .cells(8, 4).value = m .cells(9, 4).value = n .cells(10, 4).value = o .cells(8, 9).value = p .cells(11, 4).value = k
这里也是比较关键,把刚才设置的数据 a b c d 等放到 excel 中哪些位置? 例如:.cells(2, 9).value = a,是将 a 数据放入到我们表格中横 2,竖 9 的位置。 看下图就会明白了 2,9 的含义,第一个坐标代表了左侧的 1 2 3 4 等数字,第二个 坐标代表了上面 abcd 等位置,a 代表 1,b 代表 2 以此类推: end with xlapp.activeworkbook.saveas "d:\aaa\" & ai & ".xls" `cstr(val(ai)) & ".xls" xlbook.close (true) `关闭 excel 工作簿 xlapp.quit `关闭 excel set xlapp = nothing `释放 excel 对象 end sub 至此完成所有修改的选项,保存 vba 代码,退出。在这里需要提示大家一下, 有很多开发者都喜欢写完代码,测试运行一下,如果这个代码测试运行会出现错误 提示,请保存后用 runtime 打开工程测试。如果没有连接现场设备,请用系统标签 代替我们所需数据测试。 代码写完以后别着急测试,还有关键一步,就是触发 vba 选项。在这里提供 两个思路仅供参考。第一,如果需要手动输出报表,则做一个按钮,按钮属性选择 最后的命令选项,关联我们这个 vba 工程文件。第二,如果需要每天自动生成报表, 则在“事件”选项中来做触发事件关联还是这个 vba 工程,触发条件设置为系统时 间 system\hour==12,如果需要精确到分钟或者秒,在后面再并上系统的分和秒即 可。 3 结束语 万变不离其宗。读者们还可以依照本文介绍的开发方式,在 excel 中根据需 要在 excel 报表模板文件中生成柱状图、曲线趋势图等,使表格内容更加丰富和完 善。 作者简介 孙登科(1984-) 男 罗克韦尔产品开发与应用领域。
分享到:
收藏