求助 wincc 及vbs 脚本高手 点击:3315 | 回复:4



yachuangreat

    
  • 精华:0帖
  • 求助:3帖
  • 帖子:3帖 | 6回
  • 年度积分:0
  • 历史总积分:42
  • 注册:2010年11月01日
发表于:2012-02-08 12:27:48
楼主
求助帖5分-已结帖

Option Explicit
Function action

On Error Resume Next   ‘遇错跳转,继续往下执行
Dim xlApp, xlBook, oExcelFile
oExcelFile = "D:\opc1.XLS"   ‘全部代码只需改变文件的路径就可以,其他不用作任何改动
Dim isXlsOpen
isXlsOpen = False
Set xlApp = GetObject(, "Excel.Application") ‘获取EXCEL进程
If TypeName(xlApp) <> "Application" Then ‘检测到有Excel进程已经打开
Set xlApp = CreateObject("Excel.Application")
End If
xlBookFind = False
For Each oBook In xlApp.Workbooks ‘循环检查Excel进程打开的Workbooks
If LCase(oBook.FullName) = LCase(oExcelFile) Then  ‘如果路径与所检查的文件一致
  Set xlBook = oBook
  xlBookFind = True
  xlBook.Activate
  Exit Function
End If
Next
If xlBookFind = False Then ‘#如果没有找到
xlApp.Visible = True ‘要打开的文件是否显示或是在后台运行
Set xlBook = xlApp.Workbooks.Open(oExcelFile)
End If

End Function

 

各位大侠,这是wincc里面的vbs脚本代码,实现的功能是检测指定的opc1  excel表格是否打开,如果已经打开了,则不进行任何动作,如果没有打开,则自动打开。。。。。

现在的问题是我把这段代码拷到excel 的宏程序里面,是绝对可以的,但是放进wincc的脚本里面,就打不开指定文件了。。。。

求助高手,这是什么原因啊,是这段代码该的问题,还是wincc不支持这样的代码。。。。。请高手看看



楼主最近还看过



狼牙精神

  • 精华:6帖
  • 求助:5帖
  • 帖子:469帖 | 5379回
  • 年度积分:3
  • 历史总积分:62964
  • 注册:2020年3月27日
发表于:2012-02-08 13:37:03
1楼

这段脚本没啥问题,WinCC里边可以运行,我用按钮测试的完全没有问题。

你将下面的脚本拷贝一下试试:

Sub OnClick(Byval Item)  
On Error Resume Next  
Dim xlApp,xlBook,oExcelFile
oExcelFile = "D:\opc1.xls"  
Dim isXlsOpen
isXlsOpen = False
Set xlApp = GetObject(,"Excel.Application")
If TypeName(xlApp) <> "Application" Then
Set xlApp = CreateObject("Excel.Application")
End If
xlBookFind = False
For Each oBook In xlApp.Workbooks
If LCase(oBook.FullName) = LCase(oExcelFile) Then
  Set xlBook = oBook
  xlBookFind = True
  xlBook.Activate
End If
Next
If xlBookFind = False Then
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open(oExcelFile)
End If
End Sub

yachuangreat

  • 精华:0帖
  • 求助:4帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:42
  • 注册:2010年11月01日
发表于:2012-02-08 14:00:05
2楼

Option Explicit
Function action


End Function

 

你好大侠,你给的脚本我写不进啊,我新建了一个动作总是出现上面的几句,改怎么办啊  。。。

在线等。。。。可以的话加我315485815

狼牙精神

  • 精华:6帖
  • 求助:5帖
  • 帖子:469帖 | 5379回
  • 年度积分:3
  • 历史总积分:62964
  • 注册:2020年3月27日
发表于:2012-02-08 14:09:39
3楼
建个按钮,动作属性VBS脚本里直接复制上面的脚本就可以。

yachuangreat

  • 精华:0帖
  • 求助:4帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:42
  • 注册:2010年11月01日
发表于:2012-02-08 15:44:16
4楼

首先,谢谢各位的回答!

但是,我的意思看来大家还是没有理解,我要的不是这样的功能

情况是这样的,这个excel文件在工程上是让手动打开的,现在出现的问题是操作员总是误操作将其关闭,导致报表不能生成,我现在想做一个全局脚本vbs动作,设定触发器,每5秒触发一次该动作,

实现

1. 如果检测到该文件已经打开了,则不进行任何动作

2.如果检测到该文件没有打开(也可能是操作员误操作关闭的),则打开该文件

我发的代码在excel  宏里面是完全可以实现要求的,但只要复制到vbs动作里面,就不执行了,还得手动打开,即使关闭了,也不会自动打开,

    请各位高手指点一下,为什么在宏里面就可以,在vbs脚本里面就不行了呢,应该怎么改才能实现所要求的功能呢  主要是检测功能。。。。

 

 


热门招聘
相关主题

官方公众号

智造工程师