PB 테이블 구조 Excel 내보내기

6558 단어 Excel스크립트vbpb
프로젝트의 필요에 따라 PB 테이블 구조를 Excel로 내보내는 VB 스크립트가 작성되었습니다.
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

좋은 웹페이지 즐겨찾기