PDM转成EXCLE字段清单的工具

'******************************************************************************

'* File:     pdm2excel.txt

'* Title:    pdm export to excel

'* Purpose:  To export the tables and columns to Excel

'* Model:    Physical Data Model

'* Objects:  Table, Column, View

'* Author:   David

'* Created:  2019-03-18

'* Version:  1.0

'******************************************************************************

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

 set EXCEL = CREATEOBJECT("Excel.Application")

 EXCEL.workbooks.add(-4167)'添加工作表

 EXCEL.workbooks(1).sheets(1).name ="字段规则"

 set sheet = EXCEL.workbooks(1).sheets("字段规则")

 ShowProperties Model, SHEET

 EXCEL.visible = true

 '设置列宽和自动换行

 sheet.Columns(1).ColumnWidth = 20 

 sheet.Columns(2).ColumnWidth = 20 

 sheet.Columns(3).ColumnWidth = 15 

 sheet.Columns(4).ColumnWidth = 15 

 sheet.Columns(5).ColumnWidth = 15 

 sheet.Columns(1).WrapText =true

 sheet.Columns(2).WrapText =true

 End If

'-----------------------------------------------------------------------------

' Show properties of tables

'-----------------------------------------------------------------------------

Sub ShowProperties(mdl, sheet)

   ' Show tables of the current model/package

   rowsNum=0

   beginrow = rowsNum+1

   ' For each table

   output "begin"

   Dim tab

   For Each tab In mdl.tables

      ShowTable tab,sheet

   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)

   If IsObject(tab) Then

     Dim rangFlag

     rowsNum = rowsNum + 1

      ' Show properties

      Output "================================"

      sheet.cells(rowsNum, 1) = "中文表名"

      sheet.cells(rowsNum, 2) =tab.name

      sheet.cells(rowsNum, 3) = "英文表名"

      sheet.cells(rowsNum, 4) = tab.code

      sheet.cells(rowsNum, 8) = ""

      sheet.Range(sheet.cells(rowsNum, 4),sheet.cells(rowsNum, 7)).Merge      
      sheet.Range(sheet.cells(rowsNum, 8),sheet.cells(rowsNum, 15)).Merge 
      sheet.Range(sheet.cells(rowsNum, 16),sheet.cells(rowsNum, 22)).Merge           
      sheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 15)).Font.Bold = True
      sheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 7)).Interior.Color = RGB(220,220,220)
      
      
      rowsNum = rowsNum + 1
      sheet.Range(sheet.cells(rowsNum, 16),sheet.cells(rowsNum, 22)).Merge

      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.cells(rowsNum, 8) = "数据格式"
      sheet.cells(rowsNum, 9) = "唯一性"
      sheet.cells(rowsNum, 10) = "数据值域"
      sheet.cells(rowsNum, 11) = "编码规范"

      sheet.cells(rowsNum, 12) = "数据单位"
      sheet.cells(rowsNum, 13) = "业务规则(含及时性要求)"

      sheet.cells(rowsNum, 14) = "引用一致"
      sheet.cells(rowsNum, 15) = "其他要求"
      sheet.cells(rowsNum, 16) = "字段说明"

      sheet.Range(sheet.cells(rowsNum, 8),sheet.cells(rowsNum, 11)).Interior.Color = RGB(220,230,241)
      sheet.Range(sheet.cells(rowsNum, 12),sheet.cells(rowsNum, 13)).Interior.Color = RGB(253,233,217)
      sheet.cells(rowsNum, 14).Interior.Color = RGB(221,217,193)
      sheet.cells(rowsNum, 15).Interior.Color = RGB(228,223,236)
      sheet.cells(rowsNum, 15).Interior.Color = RGB(228,223,236)
      sheet.cells(rowsNum, 16).Interior.Color = RGB(240,255,255)
  

      sheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 7)).Font.Bold = True

      '设置边框

      sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 22)).Borders.LineStyle = "1"

      '*sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 15)).Borders.LineStyle = "1"

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, 2) = col.code

      sheet.cells(rowsNum, 3) = col.datatype

      If col.primary = TRUE Then
        sheet.cells(rowsNum, 4) = "是"
      ELSE
        sheet.cells(rowsNum, 4) = "否"
      End If

      If col.ForeignKey = TRUE Then
        sheet.cells(rowsNum, 5) = "是"
      ELSE
        sheet.cells(rowsNum, 5) = "否"
      End If

      If col.mandatory = TRUE Then
        sheet.cells(rowsNum, 6) = "是"
      ELSE
        sheet.cells(rowsNum, 6) = "否"
      End If      

      sheet.cells(rowsNum, 7) = col.DefaultValue
      sheet.cells(rowsNum, 16) = col.comment 
      sheet.Range(sheet.cells(rowsNum, 16),sheet.cells(rowsNum, 22)).Merge
      next      
      sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,22)).Borders.LineStyle = "2"       


      rowsNum = rowsNum + 1 

      Output "FullDescription: "       + tab.Name

   End If

End Sub

猜你喜欢

转载自blog.csdn.net/qq_31806719/article/details/88633550
PDM
今日推荐