API에서 중요한 것 중 1개는 Query입니다.
Query는 질문이란 뜻을 가지고 있습니다.
뭐 API 혹은 웹서핑에서 Query의 뜻은 요청하는 조건이라고 보시면 될 것 같습니다.
예를 들자면 많은 코인 중 비트코인만 보고 싶다.
이런 경우입니다.
웹사이트 주소에도 쿼리는 자주 들어가 있습니다.
이렇게 구글에 검색을 해도 주소 뒤에 쿼리가 붙어있습니다.
/search? 뒤에 붙어있는 것들이 쿼리라고 생각하시면 됩니다.
여하튼 그런 쿼리를 업비트 API를 사용할 때에도 필요합니다.
언어별로 쿼리를 변경하는 방법들이 조금씩 다르지만 결과는 모두 동일한 텍스트로 나오게 됩니다.
파이썬의 경우 이렇게 query라는 변수를 지정하고 url encode로 encode 하면 됩니다.
코드 결괏값을 보자면
query라는 배열에 지정되어있는 변수가
"="과 "&" 로 연결되어있습니다.
※ 추후 배열에서 키와 값을 설명하겠습니다.
형태를 따지고 보자면
키 = 값 & 키 = 값 &...
이렇게 쿼리가 정리되어 있습니다.
Java코드를 봐도
Key 값은 "="
조인트 할 때 "&" 를 사용합니다.
그래서 이걸 VBA로 코드화 해봤습니다.
VBA에서 키와 값을 구분할 수 있는 변수는 dictionary 가 떠올랐습니다.
dictionary 변수를 사용하기 위해서는 Microsoft Scripting Runtime을 참조해야 합니다.
Dictionary 변수는 key , item 저장
이렇게 QueryD라는 변수에 Add를 하면 Key , (쉼표) Item을 입력합니다.
그래서 QueryD.Add "market" , "KRW-BTC"라고 입력하면 변수에 입력됩니다.
그렇게 쿼리에 필요한 값들을 QueryD 변수에 지정합니다.
Dictionary 변수를 하나씩 찾아내는 For each
For each는 배열로 되어 있는 변수를 하나씩 찾아주는 함수입니다.
그래서 For Each Key In QueryD라고 하면 QueryD의 Key값을 하나씩 찾아낼 수 있습니다.
그리고 찾아낸 Key값을 활용하여 item을 찾아냅니다.
이렇게 변수에 괄호를 하면 Key값을 넣으라고 하며 , Key값을 넣으면 Item 값을 찾아낼 수 있습니다.
이렇게 하면 모든 Key값과 Item값을 순차적으로 찾아올 수 있습니다.
필요한 형태에 맞춰 값 연결하기
키 = 값 & 키 = 값 &...
이런 형태를 만들어야 합니다.
값(1) = Keyv & "=" & ItemV
값(2) = Keyv & "=" & ItemV
...
이런 식으로 값을 만든 뒤 Join을 "&"로 하면 됩니다.
* Dim DummyV() 의미 : DummyV라는 변수를 배열로 지정
* Redim Preserve DummyV(1 to cnt) 의미 : 배열을 변경하지만 기존 값은 유지
Sub ababab()
Dim QueryD As New Dictionary
Dim DummyV()
QueryD.Add "market", "KRW-BTC"
QueryD.Add "side", "bid"
For Each Key In QueryD
KeyV = Key
ItemV = QueryD(Key)
cnt = cnt + 1
ReDim Preserve DummyV(1 To cnt)
DummyV(cnt) = KeyV & "=" & ItemV
Next
Result = Join(DummyV, "&")
End Sub
'엑셀 > VBA' 카테고리의 다른 글
일정 시간 이후 닫히는 메세지박스 노출하기 (0) | 2021.08.23 |
---|---|
VBA에서 UUID 만드는 코드 (0) | 2021.07.08 |
VBA Selenium Runtime error 2146232576(80131700) 해결방법 (1) | 2021.07.05 |
VBA에서 Chrome으로 크롤링 하기 - Selenium (0) | 2021.07.01 |
VBA 에서 파일 또는 폴더 선택하는 GUI 사용하기 (FileDialog) (0) | 2021.07.01 |
댓글