首页 上一页 1 2 下一页 尾页

WINCC报表打印比较简洁的方法介绍 点击:11956 | 回复:38



夏天来了

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:17帖 | 202回
  • 年度积分:0
  • 历史总积分:282
  • 注册:2003年7月29日
发表于:2006-05-20 11:03:00
楼主
首先制作好EXCEL报表模板,然后定时触发全局C动作往模板的单元格里写数据,最后以系统时间格式(如2005-5-15-16-48-52.xls)来保存文件并打印当前报表。此种方法可以连续保存报表,便于查询和打印历史报表,代码少,占用系统资源少。欢迎讨论



coralsweet

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 41回
  • 年度积分:0
  • 历史总积分:129
  • 注册:2005年3月08日
发表于:2008-03-25 11:39:00
21楼
晕啊,06年的帖子,08年还在有人要!2年拉!

dovezy

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 79回
  • 年度积分:0
  • 历史总积分:224
  • 注册:2006年12月03日
发表于:2008-10-22 13:16:17
22楼

我在WINCC做了一个启动EXCEL的按钮,按下这个按钮WINCC就不断的向EXCEL传输数据,我现在在EXCEL模板的VB里做了一个程序,每天23.59.59自动将当天的数据以当天的日期为名存到文件夹中,第一天存进了文件夹,但是第二天就没有存进去了
不知道为什么,请教高手了急急急急急急呀 xiangzifu@sina.com.cn

春华★秋实

  • 精华:0帖
  • 求助:0帖
  • 帖子:103帖 | 1038回
  • 年度积分:0
  • 历史总积分:3013
  • 注册:2007年5月17日
发表于:2008-10-27 14:46:20
23楼
22楼的朋友,请把您的脚本和方法说下好么?

暮色

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 199回
  • 年度积分:0
  • 历史总积分:446
  • 注册:2004年12月24日
发表于:2008-10-28 07:14:51
24楼
回复内容:
对:龙志明 关于我现在不用模版,我用VB程序自动生成.尽管麻烦些但效果我觉得会好,呵呵,毕竟自动生成的嘛(至少有成就感,版权,呵呵) 内容的回复:


你用的VB是正版的吗?若是的话,我支持!若不是的话,有何资格谈版权?!

死亡骑士

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 1774回
  • 年度积分:0
  • 历史总积分:2630
  • 注册:2006年7月17日
发表于:2008-10-29 16:27:23
25楼
就是 不要用WINCC了 WINCC的帮助很详尽的了

dovezy

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 79回
  • 年度积分:0
  • 历史总积分:224
  • 注册:2006年12月03日
发表于:2008-11-08 20:20:43
26楼

我在WINCC做了一个启动EXCEL的按钮,按下这个按钮WINCC就不断的向EXCEL传输数据,我现在在EXCEL模板的VB里做了一个程序,每天23.59.59自动将当天的数据以当天的日期为名存到文件夹中,第一天存进了文件夹,但是第二天就没有存进去了
不知道为什么,

Option Explicit

Option Base 1
Const ServerName = "OPCServer.WinCC"
Dim WithEvents MyOPCServer As OPCServer

Dim WithEvents MyOPCGroup As OPCGroup

Dim MyOPCGroupColl As OPCGroups

Dim MyOPCItemColl As OPCItems

Dim MyOPCItems As OPCItems

Dim MyOPCItem As OPCItem

Dim ClientHandles(12) As Long ‘此处需要将6变成所要读取的变量数n

Dim ServerHandles() As Long

Dim Values(1) As Variant

Dim Errors() As Long

Dim ItemIDs(12) As String ‘此处需要将6变成所要读取的变量数n

Dim GroupName As String

Dim NodeName As String
Dim itemv(24) As Variant ‘此处将12改成变量数n的2倍
Dim ii As Integer
Dim i As Integer
Dim j As Integer
Private Sub MyOPCServer_ServerShutDown(ByVal Reason As String)
End Sub
Private Sub Workbook_Deactivate()
‘MyOPCGroupColl.RemoveAll

‘MyOPCServer.Disconnect

‘Set MyOPCItemColl = Nothing

‘Set MyOPCGroup = Nothing

‘Set MyOPCGroupColl = Nothing

‘Set MyOPCServer = Nothing
End Sub

Private Sub Workbook_Open()

i = 11 ‘此处将11换成所要写入的数据的行数,如果报表格式没有添加新行,不要改动
data_write


Application.OnTime "23:59:57", "ThisWorkbook.file_save", , True ‘每天23:59:59保存报表,到“D:\报表”文件夹中。需要在相应硬盘添加该文件夹(切记)


For ii = 1 To 12 ‘此处需要将6变成所要读取的变量数n
ClientHandles(ii) = ii

Next ii

GroupName = "MyGroup"

‘----------在excel单元格A2中写入计算机名

NodeName = Range("a2").Value

‘----------在excel单元格b2-g2中写入变量名。如果变量超过6个,按照下列格式添加n个变量

ItemIDs(1) = Range("b2").Value

ItemIDs(2) = Range("c2").Value

ItemIDs(3) = Range("d2").Value

ItemIDs(4) = Range("e2").Value

ItemIDs(5) = Range("f2").Value

ItemIDs(6) = Range("g2").Value

ItemIDs(7) = Range("h2").Value

ItemIDs(8) = Range("i2").Value

ItemIDs(9) = Range("j2").Value

ItemIDs(10) = Range("k2").Value

ItemIDs(11) = Range("l2").Value

ItemIDs(12) = Range("m2").Value

Set MyOPCServer = New OPCServer

MyOPCServer.Connect ServerName, NodeName

Set MyOPCGroupColl = MyOPCServer.OPCGroups

MyOPCGroupColl.DefaultGroupIsActive = True
Set MyOPCGroup = MyOPCGroupColl.Add(GroupName)
Set MyOPCItemColl = MyOPCGroup.OPCItems
MyOPCItemColl.AddItems 12, ItemIDs(), ClientHandles(), ServerHandles(), Errors ‘如果有n个变量,此处将6改成n的数值
MyOPCGroup.IsSubscribed = True
Exit Sub
ErrorHandler:

MsgBox "Error: " & Err.Description, vbCritical, "ERROR"
End Sub
Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, itemvalues() As Variant, Qualities() As Long, TimeStamps() As Date)
For ii = 1 To NumItems

itemv(ClientHandles(ii)) = itemvalues(ii)

Next ii


‘----------在excel单元格b3-g3中显示对应上行变量的数值。如果变量超过6个,按照下列格式添加n个变量

Range("b3").Value = CStr(itemv(1))

Range("c3").Value = CStr(itemv(2))

Range("d3").Value = CStr(itemv(3))

Range("e3").Value = CStr(itemv(4))

Range("f3").Value = CStr(itemv(5))

Range("g3").Value = CStr(itemv(6))

Range("h3").Value = CStr(itemv(7))

Range("i3").Value = CStr(itemv(8))

Range("J3").Value = CStr(itemv(9))

Range("K3").Value = CStr(itemv(10))

Range("L3").Value = CStr(itemv(11))

Range("M3").Value = CStr(itemv(12))

End Sub
Public Sub data_write()
Dim dtime

dtime = Now + TimeValue("00:30:00") ‘记录间隔为30分钟,如果是其它时间,改对应的时间

Application.OnTime dtime, "ThisWorkbook.data_write", , True


Cells(i, 1).Value = Time

For j = 2 To 13 ‘此处将7改成变量数n+1
Cells(i, j).Value = Cells(3, j).Value
Next j
i = i + 1
If i > 58 Then
i = 11
End If

End Sub
Sub file_save() ‘以当前时间为名字另存报表到d:\报表 文件夹中

Dim nm, wb As Workbook

i = 11 ‘初始化,数据改为从11行开始重新记录

Cells(2, 12).Value = Date
Cells(6, 12).Value = Cells(2, 12)
nm = Cells(6, 12).Value ‘将文件名改为W2中显示的日期,此处需要改动,由于添加了变量,对应显示日期的单元格已经不是W2了,需要将Cells里面改成相应的行,列数
‘将W2中的日期写入W6单元格中,此处需要改动,由于添加了变量,对应显示日期的单元格已经不是W2了,需要将Cells里面改成相应的行,列数

Application.ScreenUpdating = False
Cells.Copy
Set wb = Workbooks.Add
With wb
.Sheets(1).Paste
Application.CutCopyMode = False
.SaveAs "d:\输配水泵房报表\" & nm & ".xls"
.Close
End With
Set wb = Nothing
Application.ScreenUpdating = True

End Sub

lyf_143

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2008年2月26日
发表于:2008-12-12 17:11:20
27楼

我正在研究WINCC的报表打印,需要日报表,月报表,年报表,而且还要最大值,最小值和平均值,谁能告诉我怎么做啊,谢谢各位大侠了,我的邮箱  lyf_143@163.com

开心好汉

  • 精华:2帖
  • 求助:0帖
  • 帖子:29帖 | 155回
  • 年度积分:0
  • 历史总积分:542
  • 注册:2007年3月03日
发表于:2008-12-12 17:32:36
28楼

要做个循环记录才行啊,你的没有做啊

 

AHLAGBS

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:36
  • 注册:2004年2月27日
发表于:2009-01-17 11:18:03
29楼

我也需要,如果有做好的实例,请发给我,谢谢!AHLAGBS@163.COM

dongtaiyin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 13回
  • 年度积分:0
  • 历史总积分:29
  • 注册:2009年3月18日
发表于:2009-04-18 17:31:44
30楼

我也需要,如果有做好的实例,请发给我,谢谢!dongtaiyin2005@126.com

 

weilai7676

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:107
  • 注册:2007年5月15日
发表于:2009-04-19 08:22:10
31楼
我也需要,如果有做好的实例,请发给我,谢谢!lh7676@163.com

wangdong1989

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 19回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2009年4月14日
发表于:2009-04-29 20:45:48
32楼
我也需要,如果有做好的实例

北漂的蜗牛

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 18回
  • 年度积分:0
  • 历史总积分:91
  • 注册:2006年1月12日
发表于:2009-05-10 21:07:40
33楼

我想问一下 怎么把变量写到 EXCEL的表格里????

 

自动保存的脚本 我倒是写了一个 也能用。 就不知道 怎么把wincc的表格模板 写到EXCEL里面~~~哎

 

yuxuan307

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 7回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2008年10月26日
发表于:2009-07-11 22:13:56
34楼

我也想要一份谢谢了,我的邮箱lulu403@163.com

njsunsky

  • 精华:1帖
  • 求助:0帖
  • 帖子:30帖 | 67回
  • 年度积分:11
  • 历史总积分:315
  • 注册:2009年5月31日
发表于:2009-07-30 22:34:19
35楼

免费的 可以和任何具有OPC标准接口DCS连接的URPT,搞定你的需要,大家却在这纠缠不清

无需编码,表头格式设计自由,生产班报表,定时抄表,事件报表,手动抄表等都可以轻松导入EXCEL

自己找找吧,我上传到这个网站了

showcg

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 24回
  • 年度积分:0
  • 历史总积分:168
  • 注册:2008年10月14日
发表于:2009-08-26 14:02:13
36楼

恳请发一份给我把,我正学习  fucaigui1@163.com

黄归

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2009年1月09日
发表于:2011-01-27 09:13:32
37楼

现在还有吗 我也需要做报表  给我发一份吧 谢谢了 邮箱hg@widewaves.com

lyld8341

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 268回
  • 年度积分:0
  • 历史总积分:1875
  • 注册:2002年7月21日
发表于:2012-03-08 01:26:29
38楼
走过,路过,学习解惑。高人的回答啊

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页