设为首页 加入收藏

TOP

PDM与Excel利用VB脚本进行互导(五)
2015-11-21 02:05:01 来源: 作者: 【 】 浏览:5
Tags:PDM Excel 利用 脚本 进行
_I="I" '是否主键 CONST CELL_J="J" '是否可空 CONST CELL_K="K" '默认值 CONST str_iskey="Y" DIM nb ' ' get the current active model ' DIM mdl ' the current model SET mdl = ActiveModel IF (mdl IS NOTHING) THEN MsgBox "没有选择一个Model" END IF DIM fldr SET Fldr = ActiveDiagram.Parent DIM isMerage '是否需要合并表名称单元格 DIM isMulite '是否不同的Package不同的sheet DIM RQ RQ = MsgBox ("是否不同的Package不同的sheet?", vbYesNo + vbInformation,"确认") IF RQ= VbYes THEN isMulite= TRUE ELSE isMulite= FALSE END IF ' 创建新的Excel DIM x1 ' SET x1 = CreateObject("Excel.Application") x1.Workbooks.Add x1.Visible = TRUE ExportModelToExcel( fldr) MsgBox "成功将 Models 导出到Excel中!" '-------------------------------------------------------------------------------- '功能函数:将模型导出到Sheet页【 MODEL 】 '-------------------------------------------------------------------------------- PRIVATE FUNCTION ExportModelToExcel(folder) '如果是每个package导出到不同的sheet页面,则采用folder的名称作为sheet页名称,否则使用"MODEL"作为sheet页名称 IF isMulite THEN IF folder.Tables.count>0 THEN AddExcelSheet(folder.name) END IF ELSE AddExcelSheet("MODEL") END IF '写sheet页的第一行表头 WriteExcelModelHead DIM nStart DIM nEnd DIM tabobj '定义数据表对象 nb=2 isMerage=TRUE '开始循环处理所有的folder FOR EACH tabobj IN folder.Tables IF NOT tabobj.isShortcut THEN '快捷方式不处理 '合并表的单元格A、B、C IF isMerage THEN '合并表的单元格A、B、C nStart=nb '合并起始行 nEnd=nb+tabobj.Columns.count-1 '合并结束行 IF nStart<>nEnd THEN '合并单元格 x1.Range(CELL_A+CSTR(nStart)+":"+CELL_A+CSTR(nEnd)).SELECT x1.Selection.Merge x1.Range(CELL_B+CSTR(nStart)+":"+CELL_B+CSTR(nEnd)).SELECT x1.Selection.Merge END IF '将主题域、表名称、表注释填写到合并后单元格中 x1.Range(CELL_A+CSTR(nb)).Value = folder.name '主题域 x1.Range(CELL_B+CSTR(nb)).Value = Rtf2Ascii(tabobj.description) '表注释 END IF '开始循环列兵输出信息 DIM colobj '定义列对象 FOR EACH colobj IN tabobj.Columns '写表的信息 x1.Range(CELL_C+CSTR(nb)).Value = tabobj.code '表英文名称 x1.Range(CELL_D+CSTR(nb)).Value = tabobj.name '表英文名称 '写列的信息 x1.Range(CELL_E+CSTR(nb)).Value = colobj.code '列名 x1.Range(CELL_F+CSTR(nb)).Value = colobj.name '列中文名称 x1.Range(CELL_G+CSTR(nb)).Value = Rtf2Ascii(colobj.Description) '列注释 x1.Range(CELL_H+CSTR(nb)).Value = colobj.DataType '数据类型 '列是否主键,如果是主键,则输出 Y IF colobj.primary THEN x1.Range(CELL_I+CSTR(nb)).Value = "Y" END IF nb = nb+1 '行号加1 NEXT END IF NEXT '对子包进行递归,如果不使用递归只能取到第一个模型图内的表 DIM subfolder FOR EACH subfolder IN folder.Packages ExportModelToExcel(subfolder) NEXT END FUNCTION '-------------------------------------------------------------------------------- '功能函数:添加一个Sheet页 '-------------------------------------------------------------------------------- PRIVATE SUB AddExcelSheet(sheetname) x1.Sheets.Add x1.ActiveSheet.Name=sheetname END SUB '-------------------------------------------------------------------------------- '功能函数:写Excel的第一行信息 '-------------------------------------------------------------------------------- PRIVATE SUB WriteExcelModelHead() x1.Range(CELL_A+"1").Value = "主题域" x1.Range(CELL_B+"1").Value = "表注释" x1.Range(CELL_C+"1").Value = "表英文名称" x1.Range(CELL_D+"1").Value = "表中文名称" x1.Range(CELL_E+"1").Value = "列
首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇nginx+memcached+tomcat集群sessi.. 下一篇物联网(IOT)数据库需求和当前技术..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: