1、用 VBS实现 WINCC的用户归档输出到 EXCEL表格的方法和例(2009-12-30 16:47:45) 用 VBS实现 WINCC的用户归档输出到 EXCEL表格的方法和例子程序求用 VBS实现 WINCC的用户归档输出到固定格式的 EXCEL表格的方法和例子程序!我主要问题在 SQL数据库的查询语句不会。看见论坛里有关用 VBS实现 EXCEL的数据查询和导出,我现在想要完成如下功能:每分钟将数据归档,用户可以输入任意的时刻时间查询从任意时刻开始的之后每隔 1小时的数据(有点像日报里的 24个小时)。我现在对于 VBS查询数据库的语句不懂,望大大赐教!谢谢 SQL查询语句Dim st
2、rc as stringstrc = “provider=WinCCOLEDBProvider.1;catalog=CC_RebdI_09_06_22_10_38_35R;data source=ComputerNameWinCC“ 这个连接字符串可以在 SQl2000中看到Dim cc1Set cc1=CreateObject(“adodb.connection“)cc1.ConnectionString=strc cc1.CursorLocation=3cc1.openDim rst As ObjectSet rst = CreateObject(“adodb.recordset“)dim
3、 ssql as stringssql = “Tag:R,Archive_3DB1DBD0,2009-7-29 00:00:00.0000,2009-7-29 23:59:59.999,timestep=3600,258“Archive_3I_DB1DBD0归档和变量2009-7-29 00:00:00.0000,2009-7-29 23:59:59.999时间段timestep=3600,258每阁多少秒拿一个数据(3600=1 小时),258表示每个时间段取最后一个数据rst.Open ssql, cc1这样查出来的数据就是一天的每小时的数据对 rst记录集处理就可以得到你要的数据=Fun
4、ction actionDim objExcelAppDim i,TimeM,TimeNow,TimeSSet TimeM=HMIRuntime.Tags(“TimeM“)i=1+TimeM.ReadTimeNow=CStr(Year(Now)#pragma code ()#pragma code(“Shell32.dll“)/调用动态链接库VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);#pragma code()char FileName30 = “; char DateTime30 = “;SYS
5、TEMTIME sysTime;_object* pExcel = NULL; /建立 pExcel 指针 用来对 EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,“WinCC-运行系统 - “);GetLocalTime(sprintf(FileName,“d:Day_Report_%02d-%02d-%02d.xls“,sysTime.wYear,sysTime.wMonth,sysTime.wDay);pExcel = _object_create(“Excel.Application“);pExcel-Visible = 0;/控制生
6、成的 excel 文件是否可见,当 1 时,生成 excel文件时可见.pExcel-Workbooks -Open (“d:Day_Report.XLS“);pExcel-ActiveWorkbook-SaveAs(FileName);/存盘/pExcel-ActiveWorkbook-PrintPreview();/可以预览/pExcel-ActiveWorkbook-PrintOut();/直接打印pExcel-Workbooks-Close();/关闭文件pExcel-Quit();/退出 Excel_object_delete(pExcel);return 0;3、再写一个全局脚本,
7、整点触发,把你需要记录的变量写到“Day_Report 年月日.xls”相应的单元格里面并存盘;这样就完成了报表的数据存储和打印。也就是说,我们可以在电脑里面存放一份报表,并打印一份报表。同样也实现了数据的存储。相关脚本代码如下:(当时是以分钟来做测试的,仅供参考;注意此段代码缺少对其它 excel进程的判断,在此脚本执行前,不要有其它 excel应用!切记哦!呵呵。)#include “apdefap.h“int gscAction( void )int i;#pragma code (“kernel32.dll“)/调用动态链接库VOID GetLocalTime(LPSYSTEMTIME
8、 lpSystemTime);#pragma code ()#pragma code(“Shell32.dll“)/调用动态链接库VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);#pragma code()char FileName30 = “;SYSTEMTIME sysTime;_object* pExcel = NULL; /建立 pExcel 指针 用来对 EXCEL 进行操作HWND handle=NULL;handle=FindWindow(NULL,“WinCC-运行系统 - “);Get
9、LocalTime(/*SetTagWord(“Minute“,sysTime.wMinute);i=GetTagWord(“Minute“)+3;if (i26) GetTagWord(“Minute“) ;else if (iVisible = 0;/控制生成的 excel 文件是否可见,当 1 时,生成 excel文件时可见.pExcel-Workbooks -Open (FileName);pExcel-Worksheets(“sheet1“)-Range(“X1“)-Value=GetTagChar(“ServerName“);/Return-Type: char* 读取当前计算机名
10、pExcel-Worksheets(“sheet1“)-Range(“X2“)-Value=GetTagChar(“CurrentUser“);/Return-Type: char* 读取当前操作员pExcel-Worksheets(“sheet1“)-Cells(6,i)-Value=GetTagChar(“TAG1“);pExcel-Worksheets(“sheet1“)-Cells(7,i)-Value=GetTagFloat(“TAG2“);pExcel-Worksheets(“sheet1“)-Cells(8,i)-Value=GetTagFloat(“TAG3“);pExcel-
11、Worksheets(“sheet1“)-Cells(9,i)-Value=GetTagFloat(“TAG4“);pExcel-Worksheets(“sheet1“)-Cells(10, i)-Value=GetTagFloat(“TAG5“);pExcel-Worksheets(“sheet1“)-Cells(11, i)-Value=GetTagFloat(“TAG6“);pExcel-ActiveWorkbook-Save;/As(FileName);/存盘/pExcel-ActiveWorkbook-PrintPreview();/可以预览/if (i=27) pExcel-ActiveWorkbook-PrintOut(); /直接打印pExcel-Workbooks-Close();/关闭文件pExcel-Quit();/退出 Excel_object_delete(pExcel);return 0;转自亿万论坛