본문 바로가기
  • 환영 합니다 ! Welcome!
VBA For Creo

Code 재활용

by ToolBOX01 2024. 4. 20.
반응형

VBA 모듈은 코드의 조직화와 재사용성을 높이기 위해 사용됩니다. 모듈 내에는 하나 이상의 서브 프로시저와 함수를 정의할 수 있습니다. 비슷한 역할을 하는 코드를 하나의 모듈에 모아두면 코드를 찾기 쉽고 수정하기도 용이합니다.

[VBA Module]

 

VBA 모듈과 프로시저는 프로그램 코드를 조직화하고 실행하는 데 사용되는 중요한 개념입니다. 이들은 VBA 프로그래밍에서 코드의 구성과 실행을 관리하는 데 도움이 되며, 코드의 재사용성과 유지 관리성을 향상시킵니다.

 

엑셀 VBA 모듈(Module) 소스 파일 관리하기

여러 VBA 코드에서 공통으로 사용하는 소스가 있다면 Module 로 작성한 후 저장해서 재사용해 보세요. VBA 모듈은 파일 단위로 관리할 수 있습니다. 모듈을 파일로 저장하고 편집기에 가져오기 기능

mainia.tistory.com

 

□ Creo Model Connection Module (Module Name : "CreoVBAStart")

[Excel VBA]

procedure Name: CreoConnt()

Option Explicit
Public conn As pfcls.IpfcAsyncConnection
Public BaseSession As pfcls.IpfcBaseSession
Public model As pfcls.IpfcModel
Public solid As IpfcSolid

Public Sub CreoConnt()
     
     '// connect creo model
     Dim asynconn As New pfcls.CCpfcAsyncConnection   
    
     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, "www.idt21c.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

CreoVBAStart.bas
0.00MB

 

 Creo Model Connection Module 호출

CreateFeatureInfo Module

     Sub FeatureInfo()

            On Error GoTo RunError
            Application.EnableEvents = False

            '// Module Name : CreoVBAStart
            Call CreoVBAStart.CreoConnt
    
           Dim Dependencies As IpfcDependencies
                                           .
                                           .

     conn.Disconnect (2)
    
    '// Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set BaseSession = Nothing
    Set model = Nothing
    
RunError:
            If Err.Number <> 0 Then
                MsgBox "Process Failed: An error occurred." & vbCrLf & _
                       "Error No: " & CStr(Err.Number) & vbCrLf & _
                       "Error Description: " & Err.Description & vbCrLf & _
                       "Error Source: " & Err.Source, vbCritical, "Error"
                If Not conn Is Nothing Then
                    If conn.IsRunning Then
                        conn.Disconnect (2)
                    End If
                End If
            End If
    
End Sub