首页 WinCC通过VBS的Excel文件操作

WinCC通过VBS的Excel文件操作

举报
开通vip

WinCC通过VBS的Excel文件操作WinCC通过 VBS的 Excel文件操作 ISTASChenZhiWinCC集成了VBS(VBScript)脚本系统,借助VBS,WinCC可以变得更强大、更灵活、更开放。在WinCC应用中,经常对数据存储、报表等有灵活的要求,使用WinCC集成的标准功能实现起来较为困难,此时使用Excel是个很好的选择。WinCC使用VBS操作Excel文件,非常方便和直观。下面按照项目实际应用分别描述文件操作和Excel访问。一、WinCC文件操作WinCC下文件系统操作可以使用FSO对象模型。FSO–File...

WinCC通过VBS的Excel文件操作
WinCC通过 VBS的 Excel文件操作 ISTASChenZhiWinCC集成了VBS(VBScript)脚本系统,借助VBS,WinCC可以变得更强大、更灵活、更开放。在WinCC应用中,经常对数据存储、报表等有灵活的要求,使用WinCC集成的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 功能实现起来较为困难,此时使用Excel是个很好的选择。WinCC使用VBS操作Excel文件,非常方便和直观。下面按照项目实际应用分别描述文件操作和Excel访问。一、WinCC文件操作WinCC下文件系统操作可以使用FSO对象模型。FSO–FileSystemObject,是一种主控对象,通过它可以访问一系列对象。FSO中所有对象一起提供了访问和操作Windows文件系统的功能。FSO对象模型主要由以下对象和集合组成:对象/集合类型描述FileSystemObject主对象包含用来创建、删除和获得有关信息以及通常用来操作驱动器、文件夹与文件的方法和属性。和该对象相关联的许多方法,与其他FSO对象中的方法完全相似;它们是为了方便才被提供的。Drive对象包含用来收集信息的方法和属性,这些信息是关于连接在系统上的驱动器的,如驱动器的共享名和它有多少可用空间。可以是硬盘、光驱、RAM磁盘、网络共享驱动器等。Drives集合提供驱动器的列表,这些驱动器物理地或逻辑地与系统相连接。Drives集合包括所有驱动器,与类型无关。File对象包含用来创建、删除或移动文件的方法和属性,也用来向系统询问文件名、路径和多种其他属性。Files集合提供包含在文件夹内的所有文件的列表。Folder对象包含用来创建、删除或移动文件夹的方法和属性,也用来向系统询问文件夹名、路径和多种其他属性。Folders集合提供在Folder内的所有文件夹的列表。TextStream对象用来读写文本文件。FSO包含在Scripting类型库中,因此访问FSO需要先使用下面代码创建FSO对象的一个实例:DimobjFSOSetobjFSO=CreateObject("Scripting.FileSystemObject")使用后需要释放资源:SetobjFSO=NothingWinCC通过VBS的Excel文件操作ISTAS2/7FSO中每一个对象或集合的属性和方法请参考相关文档,此处限于篇幅无法详细列出。下面仅列出主对象FileSystemObject的属性和方法。属性描述Drives返回由本地计算机所有Drive对象组成的Drives集合方法描述BuildPath现有路径后附加名称CopyFile将一个或多个文件从某位置复制到另一位置CopyFolder将文件夹从某位置复制到另一位置CreateFolder创建文件夹CreateTextFile创建指定文件并返回TextStream对象,该对象可用于读或写创建的文件DeleteFile删除指定的文件DeleteFolder删除指定的文件夹和其中的内容DriveExists如果指定的驱动器存在,则返回True;否则返回FalseFileExists如果指定的文件存在,则返回True;否则返回FalseFolderExists如果指定的文件夹存在,则返回True;否则返回FalseGetAbsolutePathname从提供的指定路径中返回完整且含义明确的路径GetBaseName返回字符串,文件(不带扩展名),或者提供的路径说明中的文件夹GetDrive返回与指定的路径中驱动器相对应的Drive对象GetDriveName返回包含指定路径中驱动器名的字符串GetExtensionName返回字符串,该字符串包含路径最后一个组成部分的扩展名GetFile返回与指定路径中某文件相应的File对象GetFileName返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹GetFolder返回与指定的路径中某文件夹相应的Folder对象GetParentFolderName返回字符串,该字符串包含指定的路径中最后一个文件或文件夹的父文件夹GetSpecialFolder返回指定的特殊文件夹GetTempName返回随机生成的临时文件或文件夹的名称,用于执行要求临时文件或文件夹的操作MoveFile将一个或多个文件从某位置移动到另一位置MoveFolder将一个或多个文件夹从某位置移动到另一位置OpenTextFile打开指定的文件并返回一个TextStream对象,可以读取、写入此对象或将其追加到文件下面以常用功能举例说明FSO的使用。1.文件夹操作1.1判断文件夹是否存在IfobjFSO.FolderExists("C:\Path")ThenMsgbox("Exist!")1.2创建文件夹WinCC通过VBS的Excel文件操作ISTAS3/7objFSO.CreateFolder"C:\Path"1.3拷贝文件夹objFSO.CopyFolder"C:\Path""C:\Path2"1.4移动文件夹objFSO.MoveFolder"C:\Path""C:\Path2"1.5删除文件夹objFSO.DeleteFolder"C:\Path"2.文件操作2.1判断文件夹是否存在IfobjFSO.FileExists("C:\Path")ThenMsgbox("Exist!")2.2创建文本文件DimfSetf=objFSO.CreateTextFile"C:\Path\File.txt"f.write("第一行")f.WriteBlankLines(1)f.WriteLine("第二行")f.WriteBlankLines(2)f.WriteLine("第三行")f.Close2.3拷贝文件objFSO.CopyFile"C:\Path\File.txt""C:\Path\File2.txt"2.4移动文件objFSO.MoveFile"C:\Path\File.txt""C:\Path\File2.txt"2.5删除文件objFSO.DeleteFile"C:\Path\File.txt"二、Excel文件访问1.Application对象WinCC下使用VBS访问Excel,实际上是对Excel的Application对象成员进行编程。Application对象是Excel对象模型中最高级别的对象,表示Excel程序自身。Application对象提供正在运行的程序的信息、应用于程序实例的选项以及实例中打开的当前对象。在WinCC通过VBS的Excel文件操作ISTAS4/7Application对象中包含了一些其它的对象(子对象),这些对象只有在Application对象存在(应用程序运行)的时候才可以访问,许多子对象又有它们自己的子对象。例如,Excel的Application对象包含Workbook对象,而Workbook对象包含Worksheet对象。要访问一个对象的内容和功能,需要使用该对象的属性和方法。Application对象包含组成一个工作簿的很多部件,比如工作簿、工作表集合、单元格以及这些对象所包含的数据等。Excel的Application对象包括:§程序范围的设置和选项。这些选项大部分和“工具”菜单下“选项”对话框里的内容相同。§顶级对象返回的方法,如ActiveCell、ActiveSheet等。2.Application对象中子对象的引用方法使用Application属性可以返回Application对象,获取Application对象后,在对象模型层级中向下移动即可访问其子对象。例如,设置某工作表的第一个单元格内容为20:Application.Workbooks(1).Worksheets(1).Cells(1,1)=20上面的代码中,从Application对象开始,移到第一个工作簿,再移到第一个工作表,最后到这个单元格。3.ExcelApplication对象集合、属性、方法ExcelApplication包含的对象及其属性方法非常多,限于篇幅无法详细描述,需要时可以参考相关文档,比如MSDN。下面仅列出某些常用的作为示例。对象集合集合描述Columns表示活动工作簿中的列Rows表示活动工作簿中的行DialogsExcel程序中所有的对话框Sheets指定或活动工作簿中所有的工作表对象属性属性描述ActiveCell当前(Active)工作簿中当前工作表的当前单元格ActiveChart当前图表的Chart对象ActiveSheet当前工作表的当前工作簿ActiveWindow当前窗口的Windows对象ActiveWorkbook当前工作簿RangeSelection工作表中选择的单元格范围Selection当前窗口中选中的对象常用方法方法描述FindFile显示“打开”对话框并允许用户打开一个文件。如果文件成功打开,返回True;否则返回False。WinCC通过VBS的Excel文件操作ISTAS5/7GetOpenFilename显示标准“打开”对话框并返回用户选择的带有完整路径的文件名,实际上并未打开任何文件。InputBox显示对话框提示用户输入一个值。4.示例下面以一个完整的例子来说明WinCC下Excel的访问,在该例程中,读取Tag1、Tag2、Tag3这三个变量值并存入Excel文件。4.1创建WinCC起始画面Start.pdl,并在“打开画面”事件中加入如下脚本:DimxlAppDimDSExistDimiOnErrorResumeNext'脚本出错时继续执行'检查Excel是否已运行,若无则新建应用,以防止重复运行ExcelSetxlApp=GetObject(,"ExcelApplication")IfTypeName(xlApp)<>"Application"ThenSetxlApp=CreateObject("ExcelApplication")'检查DataSet中是否已有xlApp,若无则添加WithHMIRuntime.DataSetFori=1To.CountIfStrComp(.Item(i).Name,"xlApp",1)=0ThenDSExist=1i=.CountEndIfNextIfDSExist=0Then.Add"xlApp",xlAppEndWith通过上述脚本,创建ExcelApplication并加入DataSet,以便在不同画面或画面窗口中访问。4.2添加按钮“Writexls”,在按钮鼠标事件中加入如下脚本:DimxlApp,xlPath,xlFile,xlBook,xlSheetDimi,tDimobjFSO,objFlexGrid,objProcessBar'当前项目路径下如果不存在\Excel子目录则新建SetobjFSO=CreateObject("Scripting.FileSystemObject")xlPath=HMIRuntime.ActiveProject.Path&"\Excel"IfNotobjFSO.FolderExists(xlPath)ThenobjFSO.CreateFolder(xlPath)WinCC通过VBS的Excel文件操作ISTAS6/7SetobjFSO=Nothing'访问DadaSet里的ExcelApplication,后台新建工作薄SetxlApp=HMIRuntime.DataSet("xlApp").ValueSetxlBook=xlApp.Workbooks.AddxlApp.Visible=FalseSetxlSheet=xlBook.WorkSheets(1)'定义工作薄 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 WithxlSheet.Activate.Columns(1).ColumnWidth=8'设置列宽.Columns(2).ColumnWidth=15.Columns(3).ColumnWidth=30.Columns(3).NumberFormat="yyyy-mm-ddhh:mm:ss"'设置单元格格式.Range("A:C").HorizontalAlignment=3'设置居中对齐.Range("A1:C1").NumberFormat="General".Range("A1:C1").Font.Bold=True'设置粗体.Range("A1:C1").Font.Size=13'设置13号字.Range("A1:C1").Interior.ColorIndex=37'设置背景色.Cells(1,1)="序号"'单元格赋值.Cells(1,2)="数值".Cells(1,3)="时间"Fori=1To3'读取Tag1~3的值存入单元格.Cells(i+1,1)=i.Cells(i+1,2)=HMIRuntime.Tags("Tag"&i).Read.Cells(i+1,3)=NowNext.UsedRange.borders(1).linestyle=1'设置单元格边框.UsedRange.borders(2).linestyle=1.UsedRange.borders(3).linestyle=1.UsedRange.borders(4).linestyle=1EndWith'保存Excel文件t=nowxlFile=Right("20"&Year(t),4)&"."&Right("0"&Month(t),2)&"."&Right("0"&Day(t),2)&"."&Right("0"&Hour(t),2)&"."&Right("0"&Minute(t),2)&"."&Right("0"&Second(t),2)&"."&"xls"xlBook.SaveAsxlPath&"\"&xlFile'以特定文件名另存文件xlApp.Workbooks.Close'关闭工作簿WinCC通过VBS的Excel文件操作ISTAS7/7MsgBox("File"&xlFile&"iscreatedin"&xlPath)SetxlSheet=NothingSetxlBook=NothingSetxlApp=Nothing4.3如果需要退出Excel,可以添加按钮“ExitExcel”,在按钮鼠标事件中加入如下脚本:DimxlApp'退出ExcelSetxlApp=HMIRuntime.DataSet("xlApp").ValuexlApp.DisplayAlerts=False'不显示警告信息xlApp.QuitSetxlApp=NothingHMIRuntime.DataSet.Remove("xlApp")'DataSet中移除ExcelApplication4.4注意事项§创建ExcelApplication比较耗时,尤其是首次创建。为了避免每次Excel文件操作均创建,可在画面打开时创建,离开画面时再关闭。§本例程中采用了更好的方法:使用WinCCDataSet。在项目运行时通过DataSet将ExcelApplication定义为全局对象,这样可在不同画面或画面窗口中访问,Excel完全使用完毕再退出Excel。§当数据量比较大时,依次(循环)操作Excel单元格非常耗时,建议通过数组的方式,可以极大地提高效率。例如:xlSheet.Range("A2:H10").Value=DataArray'DataArray是二维数组5.总结使用VBS能够极大地扩展WinCC的功能,尤其在与第三方控件/应用程序交互时。上面描述了WinCC使用VBS进行文件操作以及访问Excel的方法,实际项目中,根据需求可采用不同的脚本触发方式,比如事件、循环、定时等。ExcelApplication更丰富的功能可以参考MSDN上详细的属性及方法,这样我们可以在WinCC中随心所谓地操作Excel。需要说明的是,WinCCVBS环境不一定支持所有的属性和方法,需要进行实际验证。
本文档为【WinCC通过VBS的Excel文件操作】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
李桂
人民教师
格式:pdf
大小:100KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2019-07-08
浏览量:7