根据项目需要,编写了个VB脚本,导出PB表结构到Excel。
ctrl+shift+X 打开脚本编辑器
'******************************************************************************
'* 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: By
'* Created: 2014-11-28
'* Version: 1.0
'******************************************************************************
Option Explicit
Dim rowsNum,fontName,fontSize,tableCount,isFomart,isVisible
rowsNum = 0
tableCount = 1
fontName = "微软雅黑"
fontSize = 10
'-----------------------------------------------------------------------------
' 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 EXCEL, SHEET,SHEET1
set EXCEL = CREATEOBJECT("Excel.Application")
EXCEL.workbooks.add(-4167)'添加工作表
set sheet1 = EXCEL.workbooks(1).Sheets(1) '添加新sheet
sheet1.name = "目录"
sheet1.cells(1,1) = "中文名称"
sheet1.Columns(1).ColumnWidth = 40
sheet1.Columns(1).Font.Name = fontName
sheet1.Columns(1).Font.Size = fontSize
sheet1.cells(1,2) = "表名"
sheet1.Columns(2).ColumnWidth = 30
sheet1.Columns(2).Font.Name = fontName
sheet1.Columns(2).Font.Size = fontSize
sheet1.cells(1,3) = "注释"
sheet1.Columns(3).ColumnWidth = 50
sheet1.Columns(3).Font.Name = fontName
sheet1.Columns(3).Font.Size = fontSize
EXCEL.visible = true
ShowProperties Model
End If
'-----------------------------------------------------------------------------
' Show properties of tables
'-----------------------------------------------------------------------------
Sub ShowProperties(mdl)
' Show tables of the current model/package
rowsNum=0
' For each table
output "begin"
Dim tab
For Each tab In mdl.tables
'循环处理每个表信息
ShowTable tab
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)
If IsObject(tab) Then
tableCount = tableCount + 1
'设置目录页信息
'sheet1.cells(tableCount,1) = tab.name
sheet1.Hyperlinks.Add sheet1.Range("A"&tableCount), "", tab.code&"!B1", "", tab.name
sheet1.cells(tableCount,1).Font.Name = fontName
sheet1.cells(tableCount,1).Font.Size = fontSize
sheet1.cells(tableCount,2) = tab.code
sheet1.cells(tableCount,3) = tab.comment
'创建新sheet页
set SHEET = EXCEL.workbooks(1).Sheets.Add
sheet.Name = tab.code
'设置列宽
sheet.Columns(1).ColumnWidth = 20
sheet.Columns(2).ColumnWidth = 20
sheet.Columns(3).ColumnWidth = 20
sheet.Columns(4).ColumnWidth = 10
sheet.Columns(5).ColumnWidth = 10
sheet.Columns(6).ColumnWidth = 30
'设置列字体
sheet.Columns(1).Font.Name = fontName
sheet.Columns(2).Font.Name = fontName
sheet.Columns(3).Font.Name = fontName
sheet.Columns(4).Font.Name = fontName
sheet.Columns(5).Font.Name = fontName
sheet.Columns(6).Font.Name = fontName
'设置列字号
sheet.Columns(1).Font.Size = fontSize
sheet.Columns(2).Font.Size = fontSize
sheet.Columns(3).Font.Size = fontSize
sheet.Columns(4).Font.Size = fontSize
sheet.Columns(5).Font.Size = fontSize
sheet.Columns(6).Font.Size = fontSize
Dim rangFlag
rowsNum = 1
' Show properties
Output "================================"
sheet.cells(rowsNum, 1) = tab.name
sheet.cells(rowsNum, 2) = tab.code
sheet.cells(rowsNum, 3) = tab.comment
rowsNum = rowsNum + 1
'设置列标题行字体和背景色
sheet.rows(rowsNum).Font.Bold = true
sheet.rows(rowsNum).Interior.Color = RGB(217,217,217)
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.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 2)).Borders.LineStyle = "1"
'sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 6)).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
sheet.cells(rowsNum, 4) = col.primary
sheet.cells(rowsNum, 5) = col.defaultvalue
sheet.cells(rowsNum, 6) = col.comment
next
'sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,2)).Borders.LineStyle = "2"
'sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,6)).Borders.LineStyle = "2"
rowsNum = rowsNum + 1
Output "FullDescription: " + tab.Name
End If
End Sub