반응형
□ ProductName01 Code
Option Explicit
Sub ProductName01()
'// 오류 발생 시 오류 메시지 출력
On Error Resume Next
Call MainGetToken.GetToken001
'// 변수
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 = "http://WC Adress/Windchill/servlet/odata/v6/DataAdmin/Containers?$count=false"
'// 서버와의 연결 열기
xmlhttp.Open "GET", Url, False
'//요청 헤더 설정
xmlhttp.SetRequestHeader "Content-Type", "application/json"
xmlhttp.SetRequestHeader "CSRF_NONCE", NonceTorken("NonceValue")
'//요청 보내기
xmlhttp.Send requestBody
'// 오류 발생 시 디버그 창에 오류 메시지 출력
If Err.Number <> 0 Then
Debug.Print "Error " & Err.Number & ": " & Err.Description
On Error GoTo 0
Exit Sub
End If
'// 응답 상태 코드 가져오기
status = xmlhttp.status
'// 응답 텍스트 가져오기
GetresponseText = xmlhttp.responseText
'// JSON 파싱
Set jsonObject = JsonConverter.ParseJson(GetresponseText)
'// 데이터 엑셀에 출력
j = 1
For Each jsonItem In jsonObject("value")
If jsonItem("@odata.type") = "#PTC.DataAdmin.ProductContainer" Then
Worksheets("Product Name").Cells(j + 4, "A") = j
Worksheets("Product Name").Cells(j + 4, "B") = jsonItem("Name")
Worksheets("Product Name").Cells(j + 4, "C") = jsonItem("ID")
Worksheets("Product Name").Cells(j + 4, "E") = jsonItem("@odata.type")
Worksheets("Product Name").Cells(j + 4, "F") = jsonItem("CreatedOn")
j = j + 1
End If
Next jsonItem
'// 응답 상태 및 텍스트 출력 (디버깅 용도)
'//Debug.Print "Status: " & status
'//Debug.Print "Response: " & GetresponseText
'// 정리 작업
Set xmlhttp = Nothing
End Sub
□ ProductName02 Code
- Call ProductName01
Sub ProductName02()
'// 오류 발생 시 오류 메시지 출력
On Error Resume Next
Call ProductName01
'// 변수
Dim xmlhttp As Object
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 ProductID As String
Dim i, j As Integer
Dim rng As Range
Set rng = Worksheets("Product Name").Range("A5", Cells(Rows.Count, "A").End(xlUp))
For i = 0 To rng.Count - 1
ProductID = Cells(i + 5, "C").Value
Set xmlhttp = CreateObject("MSXML2.XMLHTTP.6.0")
Url = "http://WC Adress/Windchill/servlet/odata/v6/DataAdmin/Containers('" & ProductID & "')/Folders"
xmlhttp.Open "GET", Url, False
xmlhttp.SetRequestHeader "Content-Type", "application/json"
xmlhttp.SetRequestHeader "CSRF_NONCE", NonceTorken("NonceValue")
xmlhttp.Send requestBody
'// 오류 발생 시 디버그 창에 오류 메시지 출력
If Err.Number <> 0 Then
Debug.Print "Error " & Err.Number & ": " & Err.Description
On Error GoTo 0
Exit Sub
End If
status = xmlhttp.status
GetresponseText = xmlhttp.responseText
'// JSON 파싱
Set jsonObject = JsonConverter.ParseJson(GetresponseText)
For Each jsonItem In jsonObject("value")
Worksheets("Product Name").Cells(i + 5, "D") = jsonItem("ID")
Next jsonItem
Set xmlhttp = Nothing
Next i
End Sub
□ 프로그램 실행 (Run the program)