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

학습 04) Open API, 엑셀 VBA - WC 폴더 만들기

by ToolBOX01 2024. 7. 3.
반응형

□ 소개

입력된 제품에 Folder 생성 하는 프로그램 입니다.  제품은 id로 아력 합니다. ▷ URL (재품 아래에 폴더 만들기)

POST URL = http://WC 주소/Windchill/servlet/odata/v6/DataAdmin/Containers('OR:wt.pdmlink.PDMLinkProduct:131308')/Folders

 

▷ josn

{
	"Name": "test 프로젝트",
	"Description": "이것은 테스트 입니다"
}

 

▷ WC에서 폴더만들기

 

▷ URL (재품의 서브 폴더 아래에 폴더 만들기)

POST /Windchill/servlet/odata/DataAdmin/Containers(<oid>)/Folders(<oid>)/Folders

 

주의)
제품 아래에는 제품 이름과 동일한 "/Default" 폴더가 존재 합니다, 반드시 컨테이너 id > Default 폴더 id >  폴더 id를 입력 합니다. 


□ 코드 - 제품 아래에 폴더 만들기

엑셀의 json

 

Option Explicit
Sub createForder001()

        '// 오류 발생 시 오류 메시지 출력
        On Error Resume Next
        
        Call MainGetToken.GetToken001
     
       '// 변수
        Dim xmlhttp As Object
        Set xmlhttp = CreateObject("MSXML2.XMLHTTP.6.0")
        Dim Url As String
        Dim status As Integer
        Dim jsonString As String
        jsonString = Cells(1, "A")
        
        '// URL 설정
        Url = "http://WC 주소/Windchill/servlet/odata/v6/DataAdmin/Containers('OR%3Awt.pdmlink.PDMLinkProduct%3A131308')/Folders"
       
        '// 서버와의 연결 열기
        xmlhttp.Open "POST", Url, False
        
        '//요청 헤더 설정
        xmlhttp.SetRequestHeader "Content-Type", "application/json"
        xmlhttp.SetRequestHeader "CSRF_NONCE", NonceTorken("NonceValue")
        
         '//요청 보내기
        xmlhttp.Send jsonString
    
        '// 오류 발생 시 디버그 창에 오류 메시지 출력
        If Err.Number <> 0 Then
            Debug.Print "Error " & Err.Number & ": " & Err.Description
            On Error GoTo 0
            Exit Sub
        End If
    
        '// 응답 상태 코드 가져오기
        status = xmlhttp.status
        
        '// 응답 상태 및 텍스트 출력 (디버깅 용도)
        'Debug.Print "Status: " & status

        '// 정리 작업
        Set xmlhttp = Nothing

End Sub

 

□ 코드 -  폴더 아래에 폴더 만들기

 

Option Explicit
Sub createForder001()

        '// 오류 발생 시 오류 메시지 출력
        On Error Resume Next
        
        Call MainGetToken.GetToken001
     
       '// 변수
        Dim xmlhttp As Object
        Set xmlhttp = CreateObject("MSXML2.XMLHTTP.6.0")
        Dim Url As String
        Dim status As Integer
        Dim jsonString As String
        jsonString = Cells(1, "A")
        
        '// URL 설정
        Url = "http://WC주소/Windchill/servlet/odata/v6/DataAdmin/Containers('OR%3Awt.pdmlink.PDMLinkProduct%3A131308')/Folders('OR%3Awt.folder.Cabinet%3A131359')/Folders('OR%3Awt.folder.SubFolder%3A146353')/Folders"
       
        '// 서버와의 연결 열기
        xmlhttp.Open "POST", Url, False
        
        '//요청 헤더 설정
        xmlhttp.SetRequestHeader "Content-Type", "application/json"
        xmlhttp.SetRequestHeader "CSRF_NONCE", NonceTorken("NonceValue")
        
         '//요청 보내기
        xmlhttp.Send jsonString
    
        '// 오류 발생 시 디버그 창에 오류 메시지 출력
        If Err.Number <> 0 Then
            Debug.Print "Error " & Err.Number & ": " & Err.Description
            On Error GoTo 0
            Exit Sub
        End If
    
        '// 응답 상태 코드 가져오기
        status = xmlhttp.status
        
        '// 응답 상태 및 텍스트 출력 (디버깅 용도)
        Debug.Print "Status: " & status

        '// 정리 작업
        Set xmlhttp = Nothing

End Sub

 

위 코드에서 
Containers('OR%3Awt.pdmlink.PDMLinkProduct%3A131308')/Folders('OR%3Awt.folder.Cabinet%3A131359')/ ~

" Folders('OR%3Awt.folder.Cabinet%3A131359')"는 Default 폴더 입니다


'VBA For Windchill' 카테고리의 다른 글

Windchill REST Services (WRS)  (0) 2024.07.01
학습 03) Open API, 엑셀 VBA - WC 제품 이름 가져오기  (0) 2024.06.30
VBA Web Parsing 2/2  (0) 2024.06.30
HTTP  (0) 2024.06.30
DOM (Document Object Model) 이란?  (0) 2024.06.30