Excel VBA에서 Redmine 데이터 얻기
개요
Redmine의 티켓 수가 많은 경우, 페이지 네이션되기 때문에, 무한 스크롤로 확인하고 싶었다. 우선 티켓의 주요 항목을 엑셀로 나열할 수 있도록 했습니다.
추출 버튼을 누르면 같은 시트 6행째 이후에 데이터가 내보내집니다. 단, 티켓 수가 많을 때는 상당히 시간이 걸립니다. 진행률 막대를 추가해야 할 수도 있습니다.
환경
준비
코드
:vba
Dim baseurl As String, targeturl As String
Dim header As Integer, row As Integer
Dim min As Integer, max As Integer
Dim cnt As Integer
Dim ticketid As String
Dim dom As Object
Dim issue As Object
baseurl = "http://redmine/"
header = 5
row = header + 1
min = 1
max = 100
cnt = min
'[A~G]欄の[row~(max-min+1)]行まで一気にクリアする
Range(Cells(row, 1), Cells(max - min + 1, 7)).Clear
Do While Cells(row, 1) = ""
ticketid = Trim(str(cnt - header))
'APIアクセスキーなし
targeturl = baseurl + ticketid + ".xml"
'APIアクセスキーあり
'targeturl = baseurl + ticketid + ".xml?key=aaaaaaaaaaaaaaaaaaaa"
Set dom = CreateObject("MSXML2.DOMDocument")
dom.async = False
dom.setProperty "ServerHTTPRequest", True
dom.Load (targeturl)
Set issue = dom.ChildNodes.Item(1)
If Not (issue Is Nothing) Then
Cells(row, 1) = issue.getElementsByTagName("id").Item(0).text
Cells(row, 2) = issue.getElementsByTagName("project").Item(0).getAttribute("name")
Cells(row, 3) = issue.getElementsByTagName("tracker").Item(0).getAttribute("name")
Cells(row, 4) = issue.getElementsByTagName("status").Item(0).getAttribute("name")
Cells(row, 5) = issue.getElementsByTagName("priority").Item(0).getAttribute("name")
Cells(row, 6) = issue.getElementsByTagName("assigned_to").Item(0).getAttribute("name")
Cells(row, 7) = issue.getElementsByTagName("subject").Item(0).text
row = row + 1
End If
cnt = cnt + 1
If cnt > max Then
GoTo 9999
End If
Loop
9999
xlsm 파일은 아래 GitHub로 업되어 있습니다.
htps : // 기주 b. 코 m/이치아키/레 d미네토오 x세 l. 기 t
참고 사이트
Reference
이 문제에 관하여(Excel VBA에서 Redmine 데이터 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/i-chiaki/items/455a8f639126b11ca090
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
:vba
Dim baseurl As String, targeturl As String
Dim header As Integer, row As Integer
Dim min As Integer, max As Integer
Dim cnt As Integer
Dim ticketid As String
Dim dom As Object
Dim issue As Object
baseurl = "http://redmine/"
header = 5
row = header + 1
min = 1
max = 100
cnt = min
'[A~G]欄の[row~(max-min+1)]行まで一気にクリアする
Range(Cells(row, 1), Cells(max - min + 1, 7)).Clear
Do While Cells(row, 1) = ""
ticketid = Trim(str(cnt - header))
'APIアクセスキーなし
targeturl = baseurl + ticketid + ".xml"
'APIアクセスキーあり
'targeturl = baseurl + ticketid + ".xml?key=aaaaaaaaaaaaaaaaaaaa"
Set dom = CreateObject("MSXML2.DOMDocument")
dom.async = False
dom.setProperty "ServerHTTPRequest", True
dom.Load (targeturl)
Set issue = dom.ChildNodes.Item(1)
If Not (issue Is Nothing) Then
Cells(row, 1) = issue.getElementsByTagName("id").Item(0).text
Cells(row, 2) = issue.getElementsByTagName("project").Item(0).getAttribute("name")
Cells(row, 3) = issue.getElementsByTagName("tracker").Item(0).getAttribute("name")
Cells(row, 4) = issue.getElementsByTagName("status").Item(0).getAttribute("name")
Cells(row, 5) = issue.getElementsByTagName("priority").Item(0).getAttribute("name")
Cells(row, 6) = issue.getElementsByTagName("assigned_to").Item(0).getAttribute("name")
Cells(row, 7) = issue.getElementsByTagName("subject").Item(0).text
row = row + 1
End If
cnt = cnt + 1
If cnt > max Then
GoTo 9999
End If
Loop
9999
Reference
이 문제에 관하여(Excel VBA에서 Redmine 데이터 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/i-chiaki/items/455a8f639126b11ca090텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)