其他分享
首页 > 其他分享> > 搬家第三天-86.Wincc V7.3用户归档深入5-用vbs将用户归档的内容导出到excel

搬家第三天-86.Wincc V7.3用户归档深入5-用vbs将用户归档的内容导出到excel

作者:互联网

我们在用户归档中得到数据之后,如果想导出到excel,思路是和把MSHFGrid数据导出类似的。网上有些文章是直接从后台数据表读取数据,本文介绍从数据归档控件导出数据。

1. 假设wincc项目已经创建了用户归档,画面上有一个用户归档控件,名字叫做UA,设置一个按钮,按钮点击事件添加以下vbs脚本

Sub OnClick(ByVal Item)                   
Dim UA,col,row,rows
Dim xlapp,objsheet
Dim i,j,k,m,n,filename
Set UA=ScreenItems("UA")
Set rows=UA.GetRowCollection
m=rows.Count
n=UA.ColumnCount
If m>1 Then '如果用户归档控件有记录
   Set xlapp=CreateObject("Excel.Application")
   xlapp.visible=False
   xlapp.workbooks.add
   Set objsheet=xlapp.worksheets(1)
   For k=1 To n
    ua.ColumnIndex=k
    objsheet.cells(3,k)=ua.ColumnCaption '字段名称
   Next
  objsheet.cells(1,1)="XX用户归档"
   For i=1 To m
      For j= 1 To n
          objsheet.cells(i+3,j)=ua.GetRow(i).celltext(j)
      Next
   Next
'以下代码处理日期时间数据格式以及表格边框线、标题合并单元格等排版
  objsheet.range("a1:d1").mergecells=True
  'objsheet.range("a1").ColumnWidth =20 '列宽度
  objsheet.cells(2,1)="生成时间:"
   objsheet.cells(2,2)=Year(Now) & "年" & Month(Now) & "月" & Day(Now) & "日"
  objsheet.cells(1,1).HorizontalAlignment = 3
   objsheet.range("a3:d" & CStr(3+m)).borders(1).linestyle=9
   objsheet.range("a3:d" & CStr(3+m)).borders(1).weight=2
   objsheet.range("a3:d" & CStr(3+m)).borders(2).linestyle=9
   objsheet.range("a3:d" & CStr(3+m)).borders(2).weight=2
   objsheet.range("a3:d" & CStr(3+m)).borders(3).linestyle=9
   objsheet.range("a3:d" & CStr(3+m)).borders(3).weight=2
   objsheet.range("a3:d" & CStr(3+m)).borders(4).linestyle=9
   objsheet.range("a3:d" & CStr(3+m)).borders(4).weight=2
 '保存文件
   filename= "c:\" & Year(Now) & "年" & Month(Now) & "月" & Day(Now) & "日-" & Hour(Now) & "点" & Minute(Now) & "分" & Second(Now) & "秒生成用户归档.xlsx"
   xlapp.Activeworkbook.saveas (filename)
   xlapp.workbooks.close
   xlapp.quit
   Msgbox "成功导出到C:\"
Else
   Msgbox "用户归档没有记录"
End If
End Sub

标签:objsheet,用户,vbs,range,归档,CStr,Now,xlapp
来源: https://www.cnblogs.com/fishingsriver/p/14353727.html