您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > WinCC通过VBS的Excel文件操作
WinCC通过 VBS的 Excel文件操作 ISTASChenZhiWinCC集成了VBS(VBScript)脚本系统,借助VBS,WinCC可以变得更强大、更灵活、更开放。在WinCC应用中,经常对数据存储、报表等有灵活的要求,使用WinCC集成的标准功能实现起来较为困难,此时使用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.CreateFolderC:\Path1.3拷贝文件夹objFSO.CopyFolderC:\PathC:\Path21.4移动文件夹objFSO.MoveFolderC:\PathC:\Path21.5删除文件夹objFSO.DeleteFolderC:\Path2.文件操作2.1判断文件夹是否存在IfobjFSO.FileExists(C:\Path)ThenMsgbox(Exist!)2.2创建文本文件DimfSetf=objFSO.CreateTextFileC:\Path\File.txtf.write(第一行)f.WriteBlankLines(1)f.WriteLine(第二行)f.WriteBlankLines(2)f.WriteLine(第三行)f.Close2.3拷贝文件objFSO.CopyFileC:\Path\File.txtC:\Path\File2.txt2.4移动文件objFSO.MoveFileC:\Path\File.txtC:\Path\File2.txt2.5删除文件objFSO.DeleteFileC:\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)ApplicationThenSetxlApp=CreateObject(ExcelApplication)'检查DataSet中是否已有xlApp,若无则添加WithHMIRuntime.DataSetFori=1To.CountIfStrComp(.Item(i).Name,xlApp,1)=0ThenDSExist=1i=.CountEndIfNextIfDSExist=0Then.AddxlApp,xlAppEndWith通过上述脚本,创建ExcelApplication并加入DataSet,以便在不同画面或画面窗口中访问。4.2添加按钮“Writexls”,在按钮鼠标事件中加入如下脚本:DimxlApp,xlPath,xlFile,xlBook,xlSheetDimi,tDimobjFSO,objFlexGrid,objProcessBar'当前项目路径下如果不存在\Excel子目录则新建SetobjFSO=CreateObject(Scripting.FileSystemObject)xlPath=HMIRuntime.ActiveProject.Path&\ExcelIfNotobjFSO.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)'定义工作薄格式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).Number
本文标题:WinCC通过VBS的Excel文件操作
链接地址:https://www.777doc.com/doc-4297540 .html