ken_nogi/XVBA/MSS/■MSSツール/vba-files/Module/Module7.bas
Kenichiro NOGI 4ff6e12165 XVBA
2025-07-10 10:15:51 +09:00

243 lines
6.3 KiB
QBasic
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Attribute VB_Name = "Module7"
Option Explicit
'リードタイム、工期計算データインポート
Sub getOtherData()
Application.ScreenUpdating = False '画面更新停止
Application.Calculation = xlManual '自動計算停止
Call init
'Debug.Print ">>> 関連テーブルのダウンロード 開始"
Dim resultId As String
resultId = Range("ResultId").value
If resultId <> "" Then
'リードタイムデータ取得
'Debug.Print ">> リードタイムデータ取得開始"
Call getOtherTableData(resultId, "116503", "R")
'Debug.Print "<< リードタイムデータ取得完了"
'工期計算データ取得
'Debug.Print ">> 工期計算データ取得開始"
Call getOtherTableData(resultId, "203147", "K")
'Debug.Print "<< 工期計算データ取得完了"
'追加変更WFデータ取得
'Debug.Print ">> 追加変更WFデータ取得開始"
Call getOtherTableData(resultId, "212533", "T")
'Debug.Print "<< 追加変更WFデータ取得完了"
Call getArariDataRequest(resultId)
End If
Application.Calculation = xlAutomatic '自動計算開始
Application.ScreenUpdating = True '画面更新開始
'Debug.Print "<<< 関連テーブルのダウンロード 終了"
End Sub
'MSSマスターシートのIDを指定して、関連テーブルから出たを取得する
Function getOtherTableData(classA, targetId, shName)
'共通変数
Dim apiUrl As String
Dim apiUrlParam As String
Dim tableId As String
'リードタイムテーブルID
tableId = targetId
'リクエストURL
apiUrl = baseURL & "/pleasanter/api/items/" & tableId & "/"
apiUrlParam = "Get"
'ヘッダ
Dim apiHeaders As New Dictionary
apiHeaders.Add "Content-Type", "application/json;charset=utf-8"
'リクエストデータ
Dim apiBody As New Dictionary
apiBody.Add "ApiVersion", "1.1"
apiBody.Add "ApiKey", apiKey
'Filter変数
Dim colFilter As New Dictionary
colFilter.Add "ClassA", "[" & classA & "]"
'View変数
Dim view As New Dictionary
view.Add "ColumnFilterHash", colFilter
apiBody.Add "View", view
'HTTPリクエスト送信メソッド呼び出し
Dim res As Object
Set res = callRestApi("POST", apiUrl, apiUrlParam, apiHeaders, apiBody)
'Debug.Print res("StatusCode")
'Debug.Print res("Response")("TotalCount")
If res("StatusCode") = 200 Then
'グローバル変数へ情報格納
'Debug.Print res("StatusCode")
'正常に取得できたらシートへ書き込み
'Debug.Print "<<< データ取得成功"
Call exportDataToSheet(res, shName)
End If
End Function
Function exportDataToSheet(res, shName)
'Debug.Print ">>> データ出力開始"
Dim sh As Worksheet
Set sh = Worksheets(shName)
'シートをクリア
sh.Cells.Clear
Dim data As New Dictionary
Dim value
Dim i, j As Long
i = 1
For Each value In res("Response")("Data")
data.Add "ResultId", value("ResultId")
data.Add "Status", value("Status")
data.Add "ItemTitle", value("ItemTitle")
data.Add "Updator", value("Updator")
data.Add "UpdatedTime", stringToDate(value("UpdatedTime"))
data.Add "Body", value("Body")
Dim keys, items, count
'Class
keys = value("ClassHash").keys
items = value("ClassHash").items
count = value("ClassHash").count
For j = 0 To count - 1
data.Add keys(j), items(j)
Next j
'Num
keys = value("NumHash").keys
items = value("NumHash").items
count = value("NumHash").count
For j = 0 To count - 1
data.Add keys(j), items(j)
Next j
'Date
keys = value("DateHash").keys
items = value("DateHash").items
count = value("DateHash").count
For j = 0 To count - 1
data.Add keys(j), stringToDate(items(j))
Next j
'Description
keys = value("DescriptionHash").keys
items = value("DescriptionHash").items
count = value("DescriptionHash").count
For j = 0 To count - 1
data.Add keys(j), items(j)
Next j
'Check
keys = value("CheckHash").keys
items = value("CheckHash").items
count = value("CheckHash").count
For j = 0 To count - 1
data.Add keys(j), items(j)
Next j
data.Add "Owner", value("Owner")
Dim k, itemCount As Long
itemCount = data.count
For k = 1 To itemCount
If (i) = 1 Then
sh.Cells((i), k) = data.keys(k - 1)
End If
sh.Cells((i + 1), k) = data.items(k - 1)
Next k
data.RemoveAll
i = i + 1
Next value
'Debug.Print "<<< データ出力完了"
End Function
'すべての追加変更WF申請データ未完了分を取得する
Sub getAllTsuihenList()
Application.ScreenUpdating = False '画面更新停止
Application.Calculation = xlManual '自動計算停止
Call init
'Debug.Print ">>> すべての追加変更WF申請データ未完了分を取得 開始"
Dim shName
shName = "T"
'共通変数
Dim apiUrl As String
Dim apiUrlParam As String
Dim tableId As String
'リードタイムテーブルID
tableId = "212533"
'リクエストURL
apiUrl = baseURL & "/pleasanter/api/items/" & tableId & "/"
apiUrlParam = "Get"
'ヘッダ
Dim apiHeaders As New Dictionary
apiHeaders.Add "Content-Type", "application/json;charset=utf-8"
'リクエストデータ
Dim apiBody As New Dictionary
apiBody.Add "ApiVersion", "1.1"
apiBody.Add "ApiKey", apiKey
'Filter変数
Dim colFilter As New Dictionary
colFilter.Add "Status", "[100,101,200]"
Dim colSorter As New Dictionary
colSorter.Add "Status", "desc"
'View変数
Dim view As New Dictionary
view.Add "ColumnFilterHash", colFilter
view.Add "ColumnSorterHash", colSorter
apiBody.Add "View", view
'HTTPリクエスト送信メソッド呼び出し
Dim res As Object
Set res = callRestApi("POST", apiUrl, apiUrlParam, apiHeaders, apiBody)
'Debug.Print res("StatusCode")
'Debug.Print res("Response")("TotalCount")
If res("StatusCode") = 200 Then
'グローバル変数へ情報格納
'Debug.Print res("StatusCode")
'正常に取得できたらシートへ書き込み
'Debug.Print "<<< データ取得成功"
Call exportDataToSheet(res, shName)
End If
Application.Calculation = xlAutomatic '自動計算開始
Application.ScreenUpdating = True '画面更新開始
'Debug.Print "<<< すべての追加変更WF申請データ未完了分を取得 終了"
End Sub