发布于 2011-10-17 17:28:18
31楼
恩 好的 谢谢youhm
项目主要的要求如下,wincc有一个输入输出域,对应的条形码扫描枪,,wincc上还有一些其他的状态显示点,只显示相应的状态是YES或者NO
excel模板如下:
序列号 时间 测试1 (Y/N) 测试2(y/n) 测试3(Y/S) 综合(Y/S)
(因为图上不了,所以只能这样了)
其主要功能是这样的,当我扫描一个代码时,出现在这个I/O域,同事出现在一个自动打开的excel上,然后根据PLC的程序测试功能测试出一些功能是否正常并显示到WINCC上,也即我刚刚说的状态显示点(YES/NO),当这些状态全部测完后,给出这个机器的综合检测报告是Y/N,然后扫描下一个,仍然测试这些功能,这些出现在下一行里,全部测完给一个综合的检测报告。。。如此不断扫描和循环。。给出结论
我目前的事实验版的,画面如下:
(只做了一个I/O域,一个按钮,一个显示次数的)
代码如下:
On Error Resume Next '此句必须有,防止无EXCEL进程时GetObject出错退出
Dim xlsname,xlapp,xlbook,xlsheet,isOpen,i,TagName,TagValue,Layer,Cur_row
xlsname="E:\789.xls" 'Excel文档路径
Set xlapp=GetObject(,"Excel.Application") '获取当前运行的Excel应用程序对象
If TypeName(xlapp)="Application" Then 'Excel已打开,遍历工作薄查找对应文档是否已打开
For Each xlbook In xlapp.Workbooks
If xlbook.FullName=xlsname Then
isOpen=True
Exit For
End If
Next
If Not isOpen Then '如果对应文档没打开则打开
Set xlbook=xlapp.Workbooks.Open(xlsname)
End If
Else '当前没有打开Excel程序则创建Excel应用程序并打开对应的文档
Set xlapp=CreateObject("Excel.Application")
Set xlbook=xlapp.Workbooks.Open(xlsname)
End If
xlapp.visible=True
Set xlsheet=xlbook.WorkSheets("sheet1")
layer=HMIRuntime.Tags ("layer").Read
xlsheet.cells(xlsheet.range("A65536").end(3).row+1,2).value=Now
xlsheet.cells(xlsheet.range("A65536").end(3).row+1,1).value=ScreenItems("aa1").outputvalue
xlapp.activeworkbooks.save
以上仅实现单列逐行自动换行。我扫描一个代码,按下测试开始,然后可以自动打开一个excel表,然后记录下当前的序列号和时间,后面的测试结果的变量目前还没有写,其中还有显示测试的数量。如excel模板上所示,wincc上对应的每个测试结果的变量只有一个,而当扫描代码改变的时候就需要自动换下行再测试,然后将测试结果显示到EXCEL中,功能就是这样的一个功能。
最好的永远没有