如何在Vs.net环境中自动生成Visio图.doc_第1页
如何在Vs.net环境中自动生成Visio图.doc_第2页
如何在Vs.net环境中自动生成Visio图.doc_第3页
如何在Vs.net环境中自动生成Visio图.doc_第4页
如何在Vs.net环境中自动生成Visio图.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何在Vsnet环境中自动生成Visio图第23卷第4期2007年4月甘肃科技GansuScienceandTechnologyVZ.23Apr.0.42007如何在V环境中自动生成Visio图韦宝峰,郏伯瀚,万生瑶(1.中国石油兰州石化分公司自动化研究院,甘肃兰州730060;2.中国石油西北销售分公司兰州公司,甘肃兰州730060;3.中国石油兰州石化分公司炼油厂,甘肃兰州730060)摘要:文章介绍了如何在VS.Net环境中,结合VBA编写Visio应用程序,来实现自动绘制Visio图的方法和过程.关键词:VS.Net;VBA;程序;自动生成;Visio图中图分类号:TP3l1.11业务需求在日常工作中,对第二年的工作计划有系统来管理,数据如表1所示:现在需要把信息系统中的工作计划的数据绘制成Visio时间线图.要求:系统中的数据修改了,Visio图的内容会自动与系统数据进行同步.表1工作计划的数据计划名称开始时间结束时间是否里程碑x工作5/2/20067/21/2006否半年工作总结6/10/20066/10/2006是M工作7/4/200612/10/2006否Y工作11/14/200611/20/2006否绘制的Visio图如下图1所示:图1工作计划Visio圈(0)2解决方案,打开viio,填充数据通过程序调用Visio模版文件中的VBA宏,来DimoVisioAsNewVisio.Application自动绘制Visio时间线图.oVisio.VisibleTrue2.1建设VS.Net解决方案DimflipTipAsBoolean=False图形垂直翻创建一个应用程序解决方案,获取表1的数据转标志集,打开Visio模版文件,将数据集的数据绘制成时DimoDocAsVisio.DocumentoVisio.Doc一问线图.以下为部分代码(以VB.Net为例):uments.Open(strTemplatePath)DimiAsIntegerDimoTaskPlanDataAsNewTaskPlanDataFori一0TodtData.Rows.Count一1Service.TaskPlanData连接webServiceSelectCasedtData.Rows(i)(sflcb)oTaskPlanData.UrlstrServiceURLCase是DimdsRetValAsDataSetoTaskPlanData.oDoc.ExecuteLine(TlMELNM.模块1.GetData(iUserID)获取数据vbaDrawMilstone&dtData.ROWS(i)(DimdtDataAsDataTabledsRetVa1.TablesKSSJ),&dtData.Rows(i)(Name)64甘肃科技第23卷&,&flipTip&)IfflipTipThenflipTip=FalseElseflipTip:TrueEndIfCase否oDoc.ExecuteLine(TlMELNM.模块1.vbaDrawBracketinterval&dtData.Rows(i)(KSSJ)&,&dtData.Rows(i)(JSSJ)&,&dtData.Rows(i)(Name)&,&flipTip&)IfflipTipThenflipTip:=FalseEIseflipTip:=TrueEndIfEndSelectNext2.2建设Visio模版新建一个Visio文件,将时间线拖入模版中并进行属性配置,然后编写VBA宏,来绘制间隔和里程碑,代码如下:绘制里程碑PublicSubvbaDrawMilstone(ByValdatatimeMileStoneAsDate,ByValstrMileDescAsString,ByValflipTipAsBoolean)DimshpObjAsVisio.ShapeSetshpObjThisDocument.Pages(1).Drop(Application.Documents.Item(TIMELNM.VSS).Masters.ItemU(CircleMilestone),2.755906,3.622047)DimVSOCharacterslAsVisio.CharactersSetVSOCharacterslApplication.ActiveWindow.Page.Shapes.ItemFromlD(shpObj.Shapes.Item(11).ID).CharactersVSOCharacters1.Begin一0VSOCharacters1.End一5VSOCharacters1.TextstrMileDescDimVSOCharacters2AsVisio.CharactersSetVSOCharacters2一Application.ActiveWindow.Page.Shapes.ItemFromlD(shpObj.Shapes.Item(9).ID).CharactersVsoCharacters2.Begin:0VSOCharacters2.End=9vsoCharacters2.TextdatatimeMileStone&00:00:00IfflipTipThenActiveWindow.SelectApplication.ActiveWindow.Page.Shapes.ItemFromlD(shpObj.Shapes.1一tern(1).1D一1),visSelectApplication.ActiveWindow.Selection.FlipVerticalEndIfEndSub绘制间隔PublicSubvbaDrawBracketinterval(ByValdateBIBeginAsDate,ByVaIdateBIEndAsDate,ByValstrBIDescAsString,ByValflipTipAsBoolean)DimshpObjAsVisio.ShapeSetshpObj:ThisDocument.Pages(1).Drop(Application.Documents.Item(TIMELNM.VSS).Masters.ItemU(Bracketinterval2),2.755906,3.622047)DimVSOCharacterslAsVisio.CharactersSetvsoCharacters1一Application.ActiveWindow.Page.Shapes.ItemFromlD(shpObj.Shapes.Item(1O).ID).CharactersVsoCharacters1.Begin一0VSOCharacters1.End=4VSOCharacters1.DeleteVSOCharacters1.TextstrBIDescDimVSOCharacters2AsVisio.CharactersSetvsoCharacters2一Application.ActiveWindow.Page.Shapes.ItemFromlD(shpObj.Shapes.Item(9).1D).CharactersVSOCharacters2.TextCStr(Month(dateBIBegin)&/&CStr(Day(dateBIBegin)&/&CStr(Year(dateBIBegin)一&一&CStr(Month(dateBIEnd)&/&CStr(Day(dateBIEnd)&/&CStr(Year(dateBlEnd)IfflipTipThenActiveWindow.SelectApplication.ActiveWin第4期韦宝峰等:如何在V环境中自动生成Visio图65dow.Page.Shapes.ItemFromID(shpObj.Shapes.Item(1).ID一1),visSelectApplication.ActiveWindow.Selection.FlipVerticalEndIfEndSub2.3关键点在Vb.Net程序中调用Visio模板文件中的VBA宏所用到的函数是ExecuteLine(LineAsString),也是程序和Visio联系的桥梁.在上面的程序中,绘制里程碑的命令行就是TIMELNM.模块1.vbaDrawMilstone&dtData.Rows(i)(KSSJ)&,&dtData.Rows(i)(Name)&,&flipTip&,其中,&dtData.Rows(i)(KSSJ)&,&dtData.Rows(i)(Name)&,&flipTip&分别为函数TIMELNM.模块1.vbaDrawMilstone的三个参数,绘制间隔的命令行说明和里程碑命令行说明类似.3先决条件在Visio自动生成应用的时候,客户端需要进行一些先决条件的设置.(1)安装MicrosoftVisio并设置MicrosoftVisio宏运行的安全性.安装MicrosoftVisio,进人MicrosoftVisio,点?-.-?-?-?-?(上接第48页)击菜单条工具一>宏一>安全性设置安全性:在安全级标签下,选中低选项;在可靠发行商标签下,选中信任对于visualBasic项目的访问选项.(2)安装.NetFrameWork1.1,设置.NetFrameWork1.1运行库安全策略.打开控制面板,点击管理工具,打开Microsoft.NETFramework1.1配置,设置运行库安全策率:o1点击企业一)代码组一)AllCode,在右边窗口点击编辑代码组属性:在权限集标签下,权限集选择FullTrust,点击确定;o2点击计算机一)代码组一)AllCode,在右边窗口点击编辑代码组属性:在权限集标签下,权限集选择FullTrust,点击确定;O3点击用户一)代码组一)AllCode,在右边窗口点击编辑代码组属性:在权限集标签下,权限集选择FullTrust,点击确定.4结论通过程序自动调用Visio模版文件中的VBA宏,可以自动绘制Visio时间线图,通过简单的先决条件配置,用户可以很方便的使用该功能.参考文献:EI-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论