본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/VBA, VB.NET For Creo

초보자를 위해 . . . . 반복되는 코드 라이브러리로 구성 하기

by ToolBOX01 2026. 5. 6.
반응형

PTC Creo Parametric (3D CAD 소프트웨어)와 Excel VBA를 연결하는 코드 자동화 매크로의 초기화 단계로 사용되고 매번 코드 작성시 반복하여 사용 합니다. 코드 작성 할때마다 반복덕으로 입력 해야 합니다. 별도의 라이브러리 만들어 사용한다면, 매번 입력할 필요는 없습니다. Creo VBA 공통 초기화 코드를 라이브러리 모듈로 만드는 방법입니다.

설계 구조

[라이브러리 모듈: CreoLib.bas]
        │
        ├─ ConnectCreo()        → 연결
        ├─ DisconnectCreo()     → 연결 해제
        ├─ GetCurrentModel()    → 모델 반환
        ├─ GetSolid()           → Solid 반환
        └─ WriteModelInfo()     → 시트에 정보 기록

[각 업무 모듈]
        │
        └─ Call ConnectCreo() 로 호출

 

라이브러리 모듈 코드

CreoVBAStart는 VBA 모듈(Module) 이름입니다. 독립된 라이브러리 파일이 아니라, 동일한 Excel .xlsm 파일 안에 존재하는 별도의 모듈입니다.이 모듈의 역할은 Creo(PTC CAD 소프트웨어)와 VBA를 연결(connect) 하는 것으로, 다른 모듈들이 공통으로 재사용할 수 있도록 분리해 둔 것입니다.

Option Explicit
Public conn As pfcls.IpfcAsyncConnection
Public model As pfcls.IpfcModel
Public Sub VBAStart()
     
     '// connect creo model
    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim BaseSession As pfcls.IpfcBaseSession
    Dim solid As IpfcSolid
    
    Set conn = asynconn.Connect("", "", ".", 5)
    Set BaseSession = conn.Session
    Set model = BaseSession.CurrentModel
    Set solid = model
     
     '// creo model connection check
     If model Is Nothing Then
        MsgBox "There are No Active Creo Models", vbInformation, "https://tool-2020.tistory.com/"
        Exit Sub
    End If
          
     '// Current Model Information
     Worksheets("Feature Table").Cells(2, "D") = BaseSession.GetCurrentDirectory
     Worksheets("Feature Table").Cells(3, "D") = model.Filename
             
End Sub

 

 

📞 Call CreoVBAStart.VBAStart 호출 방법

Sub FeatureInfo()
    Call CreoVBAStart.VBAStart   ' ← 다른 모듈에서 호출
    
    ' 이후 conn, model 변수를 바로 사용 가능
    Set ModelOwner = model
    ...
End Sub

VBA에서 다른 모듈의 프로시져를 호출할 때 모듈명.프로시져명 형식을 사용합니다. Call은 생략도 가능하지만 명시적으로 쓴 것입니다.

문법 구조:


Call  [모듈이름].[프로시져이름]
Call  CreoVBAStart  .  VBAStart
       ↑ 모듈명         ↑ Sub 이름

 

유튜브 동영상

 


 

by korealionkk@gmail.com

 

반응형