□ 소개
Windchill PDMLink의 제품 (Product Name)을 가져오는 프로그램 입니다. jsonconvert 프로그램을 설치 해야 합니다.
This is a program to get the product (Product Name) of Windchill PDMLink. You need to install the jsonconvert program.
Rest API를 사용 하기 위해서는 JSON 구조를 이해해야 합니다.
You need to understand the JSON structure to use Rest API.
자세한것은 아래 블로그를 참고 합니다
▷ NonceToken Module
전역 함수로 정의 합니다. "wc address"는 Windchill PDMLink 주소 입니다. 최초 접속시 ID와 비번을 입력 해야 합니다.
Defined as a global function. "wc address" is the Windchill PDMLink address. You must enter your ID and password when connecting for the first time.
json 구조로 결과 값을 가져옵니다, (전문 용어 : Parsing) jsonCover 모듈로 일반 문자로 변환 합니다.
Get the result value in json structure (technical term: Parsing) and convert it to plain characters with jsonCover module.
토큰 값은 "csrfToken" 변수에 저장 됩니다 .
The token value is stored in the "csrfToken" variable.
Option Explicit
Public xmlhttp As Object
Public responseJson As String
Public NonceTorken As Object
Public csrfToken As String
Public Sub GetToken001()
'// MSXML2.XMLHTTP.6.0 객체를 만듭니다.
Set xmlhttp = CreateObject("MSXML2.XMLHTTP.6.0")
'// 요청 메서드를 GET으로 설정합니다.
xmlhttp.Open "GET", "http://WC address/Windchill/servlet/odata/PTC/GetCSRFToken()", False
'// 요청 헤더를 설정합니다.
xmlhttp.SetRequestHeader "Content-Type", "application/json"
xmlhttp.SetRequestHeader "Accept", "application/json"
'// 요청을 보냅니다.
xmlhttp.Send
'// 응답 상태를 확인합니다.
If xmlhttp.status = 200 Then
'// 응답 JSON을 가져옵니다.
responseJson = xmlhttp.responseText
'// JSON을 파싱합니다. (JsonConverter가 필요합니다)
Set NonceTorken = JsonConverter.ParseJson(responseJson)
'// CSRF 토큰값을 가져옵니다.
csrfToken = NonceTorken("NonceValue")
'// Debug.Print NonceTorken("NonceKey")
'// Debug.Print NonceTorken("NonceValue")
Else
' //오류 처리
MsgBox "Error: " & xmlhttp.status
End If
End Sub
▷ 제품 이름 가져오는 프로그램 (Program to get product name)
Windchill PDMLink에 토큰과 제품 이름 요청을 함께 보내면, Json 데이터 구조로 값을 가져올수 있습니다.
If you send a request to Windchill PDMLink along with a token and a product name, you can retrieve the values as a JSON data structure.
이것을 jsonCover 모듈로 변환 합니다. (배열의 형태로 변환 됩니다)
Convert this to jsonCover module (it will be converted to array form)
변환것을 이용하여 엑셀 파일에 자동 입력 합니다
Automatically input into Excel file using conversion
Option Explicit
Sub ProductName01()
'// 오류 발생 시 오류 메시지 출력 (Output error message when an error occurs)
On Error Resume Next
Call MainGetToken.GetToken001
'// 변수 (variable)
Dim xmlhttp As Object
Set xmlhttp = CreateObject("MSXML2.XMLHTTP.6.0")
Dim Url As String
Dim requestBody As String
Dim GetresponseText As String
Dim status As Integer
Dim jsonObject As Object
Dim jsonItem As Object
Dim ProductType As String
Dim i, j As Integer
'// URL 설정 (URL settings)
Url = "http://WC address:80/Windchill/servlet/odata/v6/DataAdmin/Containers?$count=false"
'// 서버 연결 9Server connection)
xmlhttp.Open "GET", Url, False
'//요청 헤더 설정 (Setting request headers)
xmlhttp.SetRequestHeader "Content-Type", "application/json"
xmlhttp.SetRequestHeader "CSRF_NONCE", NonceTorken("NonceValue")
'//요청 보내기(Send Request)
xmlhttp.Send requestBody
'// 오류 발생 시 디버그 창에 오류 메시지 출력
'// (Output error message to debug window when error occurs10
If Err.Number <> 0 Then
Debug.Print "Error " & Err.Number & ": " & Err.Description
On Error GoTo 0
Exit Sub
End If
'// 응답 상태 코드 가져오기(Get response status code)
status = xmlhttp.status
'// 응답 텍스트 가져오기 (Get response text)
GetresponseText = xmlhttp.responseText
'// JSON 파싱 (JSON Parsing)
Set jsonObject = JsonConverter.ParseJson(GetresponseText)
'// 데이터 엑셀에 출력(Output data to Excel)
i = 1
j = 1
For Each jsonItem In jsonObject("value")
If jsonItem("@odata.type") = "#PTC.DataAdmin.ProductContainer" Then
Worksheets("product").Cells(j + 4, "A") = j
Worksheets("product").Cells(j + 4, "B") = jsonItem("ID")
Worksheets("product").Cells(j + 4, "C") = jsonItem("Name")
j = j + 1
End If
i = i + 1
Next jsonItem
'// 응답 상태 및 텍스트 출력 (디버깅 용도)
'// Response status and text output (for debugging purposes)
'//Debug.Print "Status: " & status
'//Debug.Print "Response: " & GetresponseText
'// 정리 작업 (Clean up work)
Set xmlhttp = Nothing
End Sub
프로그램 실행 결과
Program execution results
▷ 제품 과 기본 폴더 ID 표시 (Display product and base folder IDs)
'VBA For Windchill' 카테고리의 다른 글
Windchill & VBA 04) - Create a Windchill Folder (1) | 2024.07.03 |
---|---|
Windchill REST Services (WRS) (0) | 2024.07.01 |
VBA Web Parsing 2/2 (0) | 2024.06.30 |
HTTP (0) | 2024.06.30 |
DOM (Document Object Model) 이란? (0) | 2024.06.30 |