把下面的腳本放進pd的腳本運行器運行即可 '****************************************************************************** Option?Explicit ???Dim?rowsNum ???rowsNum?=?0 '----------------------------------------------------------------------------- '?Main?function '----------------------------------------------------------------------------- '?Get?the?current?active?model ????Dim?Model ????Set?Model?=?ActiveModel ????If?(Model?Is?Nothing)?Or?(Not?Model.IsKindOf(PdPDM.cls_Model))?Then ???????MsgBox?"The?current?model?is?not?an?PDM?model." ????Else ??????'?Get?the?tables?Collection ??????'創建EXCEL?APP ??????dim?beginrow ??????DIM?EXCEL,?SHEET,?SHEETLIST ??????set?EXCEL?=?CREATEOBJECT("Excel.Application") ??????EXCEL.workbooks.add(-4167)'添加工作表 ??????EXCEL.workbooks(1).sheets(1).name?="表結構" ??????set?SHEET?=?EXCEL.workbooks(1).sheets("表結構") ?????? ??????EXCEL.workbooks(1).sheets.add ??????EXCEL.workbooks(1).sheets(1).name?="目錄" ??????set?SHEETLIST?=?EXCEL.workbooks(1).sheets("目錄") ??????ShowTableList?Model,SHEETLIST ??????ShowProperties?Model,?SHEET,SHEETLIST ?????? ?????? ??????EXCEL.workbooks(1).Sheets(2).Select ??????EXCEL.visible?=?true ??????'設置列寬和自動換行 ??????sheet.Columns(1).ColumnWidth?=?20? ??????sheet.Columns(2).ColumnWidth?=?20? ??????sheet.Columns(3).ColumnWidth?=?20? ??????sheet.Columns(4).ColumnWidth?=?40? ??????sheet.Columns(5).ColumnWidth?=?10? ??????sheet.Columns(6).ColumnWidth?=?10? ??????sheet.Columns(1).WrapText?=true ??????sheet.Columns(2).WrapText?=true ??????sheet.Columns(4).WrapText?=true ??????'不顯示網格線 ??????EXCEL.ActiveWindow.DisplayGridlines?=?False ?????? ?????? ?End?If '----------------------------------------------------------------------------- '?Show?properties?of?tables '----------------------------------------------------------------------------- Sub?ShowProperties(mdl,?sheet,SheetList) ???'?Show?tables?of?the?current?model/package ???rowsNum=0 ???beginrow?=?rowsNum+1 ???Dim?rowIndex? ???rowIndex=3 ???'?For?each?table ???output?"begin" ???Dim?tab ???For?Each?tab?In?mdl.tables ??????ShowTable?tab,sheet,rowIndex,sheetList ??????rowIndex?=?rowIndex?+1 ???Next ???if?mdl.tables.count?>?0?then ????????sheet.Range("A"?&?beginrow?+?1?&?":A"?&?rowsNum).Rows.Group ???end?if ???output?"end" End?Sub '----------------------------------------------------------------------------- '?Show?table?properties '----------------------------------------------------------------------------- Sub?ShowTable(tab,?sheet,rowIndex,sheetList) ???If?IsObject(tab)?Then ?????Dim?rangFlag ?????rowsNum?=?rowsNum?+?1 ??????'?Show?properties ??????Output?"================================" ??????sheet.cells(rowsNum,?1)?=tab.name ??????sheet.cells(rowsNum,?1).HorizontalAlignment=3 ??????sheet.cells(rowsNum,?2)?=?tab.code ??????'sheet.cells(rowsNum,?5).HorizontalAlignment=3 ??????'sheet.cells(rowsNum,?6)?=?"" ??????'sheet.cells(rowsNum,?7)?=?"表說明" ??????sheet.cells(rowsNum,?3)?=?tab.comment ??????'sheet.cells(rowsNum,?8).HorizontalAlignment=3 ??????sheet.Range(sheet.cells(rowsNum,?3),sheet.cells(rowsNum,?7)).Merge ??????'設置超鏈接,從目錄點擊表名去查看表結構 ??????'字段中文名????字段英文名????字段類型????注釋????是否主鍵????是否非空????默認值 ??????sheetList.Hyperlinks.Add?sheetList.cells(rowIndex,2),?"","表結構"&"!B"&rowsNum ??????rowsNum?=?rowsNum?+?1 ??????sheet.cells(rowsNum,?1)?=?"字段中文名" ??????sheet.cells(rowsNum,?2)?=?"字段英文名" ??????sheet.cells(rowsNum,?3)?=?"字段類型" ??????sheet.cells(rowsNum,?4)?=?"注釋" ??????sheet.cells(rowsNum,?5)?=?"是否主鍵" ??????sheet.cells(rowsNum,?6)?=?"是否非空" ??????sheet.cells(rowsNum,?7)?=?"默認值" ??????'設置邊框 ??????sheet.Range(sheet.cells(rowsNum-1,?1),sheet.cells(rowsNum,?7)).Borders.LineStyle?=?"1" ??????'sheet.Range(sheet.cells(rowsNum-1,?4),sheet.cells(rowsNum,?9)).Borders.LineStyle?=?"1" ??????'字體為10號 ??????sheet.Range(sheet.cells(rowsNum-1,?1),sheet.cells(rowsNum,?7)).Font.Size=10 ????????????Dim?col?'?running?column ????????????Dim?colsNum ????????????colsNum?=?0 ??????for?each?col?in?tab.columns ????????rowsNum?=?rowsNum?+?1 ????????colsNum?=?colsNum?+?1 ??????????sheet.cells(rowsNum,?1)?=?col.name ????????'sheet.cells(rowsNum,?3)?=?"" ??????????'sheet.cells(rowsNum,?4)?=?col.name ??????????sheet.cells(rowsNum,?2)?=?col.code ??????????sheet.cells(rowsNum,?3)?=?col.datatype ????????sheet.cells(rowsNum,?4)?=?col.comment ??????????If?col.Primary?=?true?Then ????????sheet.cells(rowsNum,?5)?=?"Y"? ????????Else ????????sheet.cells(rowsNum,?5)?=?"?"? ????????End?If ????????If?col.Mandatory?=?true?Then ????????sheet.cells(rowsNum,?6)?=?"Y"? ????????Else ????????sheet.cells(rowsNum,?6)?=?"?"? ????????End?If ????????sheet.cells(rowsNum,?7)?=??col.defaultvalue ??????next ??????sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Borders.LineStyle?=?"3"??????? ??????'sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle?=?"3" ??????sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Font.Size?=?10 ??????rowsNum?=?rowsNum?+?2 ?????? ??????Output?"FullDescription:?"???????+?tab.Name ???End?If ??? End?Sub '----------------------------------------------------------------------------- '?Show?List?Of?Table '----------------------------------------------------------------------------- Sub?ShowTableList(mdl,?SheetList) ???'?Show?tables?of?the?current?model/package ???Dim?rowsNo ???rowsNo=1 ???'?For?each?table ???output?"begin" ???SheetList.cells(rowsNo,?1)?=?"主題" ???SheetList.cells(rowsNo,?2)?=?"表中文名" ???SheetList.cells(rowsNo,?3)?=?"表英文名" ???SheetList.cells(rowsNo,?4)?=?"表說明" ???rowsNo?=?rowsNo?+?1 ???SheetList.cells(rowsNo,?1)?=?mdl.name ???Dim?tab ???For?Each?tab?In?mdl.tables ?????If?IsObject(tab)?Then ?????????rowsNo?=?rowsNo?+?1 ??????SheetList.cells(rowsNo,?1)?=?"" ??????SheetList.cells(rowsNo,?2)?=?tab.name ??????SheetList.cells(rowsNo,?3)?=?tab.code ??????SheetList.cells(rowsNo,?4)?=?tab.comment ?????End?If ???Next ????SheetList.Columns(1).ColumnWidth?=?20? ??????SheetList.Columns(2).ColumnWidth?=?20? ??????SheetList.Columns(3).ColumnWidth?=?30? ?????SheetList.Columns(4).ColumnWidth?=?60? ???output?"end" End?Sub
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END