设为首页 加入收藏

TOP

PDM与Excel利用VB脚本进行互导(二)
2015-11-21 02:05:01 来源: 作者: 【 】 浏览:6
Tags:PDM Excel 利用 脚本 进行
n("F:\model\model_import.xlsx") xlApp.Visible = TRUE output "开始从Excel创建模型" Create_From_Excel(xlBook) output "模型创建完成,开始关闭Excel" SET xlBook=NOTHING xlApp.Quit SET xlApp=NOTHING END IF PRIVATE SUB Create_From_Excel(xlBook) DIM xlsheet DIM rowcount dim pkg FOR EACH xlsheet IN xlBook.WORKSHEETS rowcount = xlsheet.UsedRange.Cells.Rows.Count output "本Excel["+xlsheet.name+"]共有行数为:"+CSTR(rowcount) IF rowcount>1 THEN SET pkg = CreateOrReplacePackageByName( xlsheet.name , mdl) Create_Model_From_Excel xlsheet,pkg SET xlsheet=NOTHING END IF NEXT END SUB '-------------------------------------------------------------------------------- '功能函数 '-------------------------------------------------------------------------------- PRIVATE SUB Create_Model_From_Excel(xlsheet,package) DIM Tab '定义数据表对象 DIM col DIM tabcode DIM tabcode1 DIM i DIM col_code FOR i=2 TO xlsheet.UsedRange.Cells.Rows.Count '判断是否需要创建新表对象 tabcode1 = xlsheet.Range(CELL_C+CSTR(i)).Value IF tabcode1<>"" and tabcode<>tabcode1 THEN SET Tab=NOTHING tabcode=tabcode1 IF tabcode<>"" THEN '判断表是否存在,如果不存在则创建,存在则直接返回表对象 SET tab = CreateOrReplaceTableByCode(tabcode,package) '将表的所有列删除,如果需要重新创建表的列 IF isclear_columns THEN DeleteTableColumns(tab) END IF '更新表的属性 Tab.code=xlsheet.Range(CELL_C+CSTR(i)).Value Tab.name=xlsheet.Range(CELL_D+CSTR(i)).Value Tab.comment=xlsheet.Range(CELL_D+CSTR(i)).Value Tab.Description=xlsheet.Range(CELL_B+CSTR(i)).Value '注释 'Tab.owner=FindUserByName(str_username) output "创建表模型OK:"+Tab.code+"——"+Tab.name END IF END IF IF NOT(Tab IS NOTHING) THEN '创建表的列 col_code=xlsheet.Range(CELL_E+CSTR(i)).Value '列代码 '判断是否已经存在列,不存在则创建 SET col = CreateOrReplaceColumnByCode(col_code,Tab) '设置列属性 col.code=xlsheet.Range(CELL_E+CSTR(i)).Value '列代码 col.name=xlsheet.Range(CELL_F+CSTR(i)).Value '列名称 col.comment=xlsheet.Range(CELL_F+CSTR(i)).Value '列注释 col.Description=xlsheet.Range(CELL_G+CSTR(i)).Value '列注释 col.DataType=xlsheet.Range(CELL_H+CSTR(i)).Value '列数据类型 '列是否主键,如果是主键,则输出 Y IF CSTR(xlsheet.Range(CELL_I+CSTR(i)).Value)=str_iskey THEN col.primary= TRUE END IF output "更新表模型的列OK:"+Tab.code+"——"+col.code+"--"+col.name END IF NEXT END SUB '-------------------------------------------------------------------------------- '功能函数 '-------------------------------------------------------------------------------- PRIVATE FUNCTION CreateOrReplacePackageByName(name,model) DIM pkg 'Table 对象 SET pkg = FindPackageByName(name,model) IF pkg IS NOTHING THEN SET pkg = model.Packages.CreateNew() pkg.SetNameAndCode name, name pkg.PhysicalDiagrams.Item(0).SetNameAndCode name, name END IF SET CreateOrReplacePackageByName = pkg END FUNCTION PRIVATE FUNCTION CreateOrReplaceTableByCode(code,package) DIM tab 'Table 对象 SET tab = FindTableByCode(code,package) IF tab IS NOTHING THEN SET tab = package.Tables.CreateNew() tab.SetNameAndCode code, code END IF SET CreateOrReplaceTableByCode = tab END FUNCTION PRIVAT
首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇nginx+memcached+tomcat集群sessi.. 下一篇物联网(IOT)数据库需求和当前技术..

评论

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