본문 바로가기
  • Welcome!
VBA VB.Net Code

학습 03) Open API, 엑셀 VBA

by ToolBOX01 2024. 6. 24.
반응형

□ 코드 문의

****************************************************************************************************************************
Dim OHTTP As WinHttpRequest
Set OHTTP = New WinHttpRequest '// WinHttpRequest 객체 생성
    
'//API URL 설정
strURL = "https://*****xml?crtfc_key= 인증코드&corp_code=01168684&bsns_year=2019&reprt_code=11011"
    
 '// GET 요청 설정 및 전송
 OHTTP.Open "Get", strURL, False
******************************************************************************************************************************

"False"를 입력한 이유는 .... 

더보기

## 코드 분석 및 False 사용 이유

제시된 코드는 `OHTTP` 객체를 사용하여 **비동기 방식으로 GET 요청**을 전송하는 것으로 보입니다. `OHTTP.Open` 메서드의 세 번째 파라미터 `Async`는 요청 방식을 결정하며, **True**로 설정하면 비동기, **False**로 설정하면 동기 방식으로 작동합니다. 

따라서 코드에서 `False`를 사용하는 이유는 다음과 같습니다.

**1. 응답 처리 지연 방지:**

동기 방식(False)은 요청을 전송하고 응답을 받을 때까지 프로그램 실행을 **블로킹**합니다. 즉, 응답이 오기 전까지 다른 작업을 수행할 수 없어 전체적인 처리 속도가 느려질 수 있습니다. 반면, 비동기 방식(True)은 요청을 전송하고 즉시 제어권을 프로그램에 반환하며, 응답은 나중에 비동기 방식으로 처리됩니다. 이는 다른 작업을 수행하면서 응답을 기다릴 수 있도록 하여 프로그램의 **반응성**을 향상시킵니다.

**2. 효율적인 리소스 활용:**

동기 방식은 요청이 완료될 때까지 스레드를 차지하고 있어 리소스 사용량이 증가합니다. 반면, 비동기 방식은 요청 전송 후 즉시 제어권을 반환하여 스레드를 다른 작업에 활용할 수 있으므로 **리소스 활용도**를 높일 수 있습니다.

**3. 복잡한 작업 처리:**

동기 방식은 응답을 기다리는 동안 다른 작업을 수행할 수 없기 때문에 복잡한 작업 처리에 적합하지 않습니다. 반면, 비동기 방식은 여러 요청을 동시에 처리하거나 시간이 오래 걸리는 작업을 처리하는 데 유리합니다.


**따라서, 일반적으로 네트워크 요청과 같은 비동기 작업을 수행할 때는 응답 처리 지연 방지, 효율적인 리소스 활용, 복잡한 작업 처리 등의 이점을 위해 비동기 방식(True)을 사용하는 것이 좋습니다.**

**참고:**

* 특정 상황에서는 동기 방식이 더 적합할 수도 있습니다. 예를 들어, 간단한 요청이고 응답이 빠르게 도착할 것으로 예상되는 경우, 동기 방식을 사용하여 코드를 단순화하고 읽기 쉽게 만들 수 있습니다.
* `OHTTP` 객체는 다양한 기능을 제공하며, 코드에서 사용된 방식은 특정 라이브러리의 구현에 따라 다를 수 있습니다. 

 

□ 코드 문의

*************************************************************************************
"Open FileName For Binary Access Write As #1"
Put #1, 1, OHTTP.ResponseBody
Close #1
*************************************************************************************

제시된 VBA 코드는 파일을 바이너리 모드로 열어 데이터를 쓰는 작업을 수행합니다. 


1. **파일 열기:** 
    * `Open` 키워드는 지정된 파일을 열는 작업을 시작합니다.
    * `"G:\Dart\DartTest.xml"` 문자열은 열려야 할 파일의 전체 경로와 파일 이름을 나타냅니다.
    * `For Binary Access` 키워드는 파일을 바이너리 모드로 열어야 한다는 것을 의미합니다. 즉, 파일은 바이트 스트림으로 처리되며 문자 인코딩이나 형식이 적용되지 않습니다.
    * `Write` 키워드는 파일을 쓰기 모드로 열어야 한다는 것을 나타냅니다. 즉, 데이터를 파일에 쓸 수 있지만 읽을 수는 없습니다.
    * `As #1` 키워드는 열린 파일을 `#1` 파일 번호에 할당합니다. 파일 번호는 프로그램 내에서 열린 파일을 식별하고 관리하는 데 사용됩니다.

2. **데이터 쓰기:**
    * `Put #1` 문은 `OHTTP.ResponseBody`에 있는 바이너리 데이터를 파일의 1번 바이트 위치부터 시작하여 씁니다.

3. **파일 닫기:**
    * `Close #1` 문은 `#1` 파일 번호와 관련된 파일을 닫습니다.

**추가 정보:**

* `LenB` 함수는 바이너리 데이터의 길이를 바이트 단위로 계산하는 데 사용됩니다.
* `If` 문은 API 요청이 성공했는지 (상태 코드 200) 확인한 후 응답 본문을 저장하는 작업을 수행합니다.

**결론:**

이 코드 조각은 API 호출로부터 얻은 바이너리 응답 데이터를 지정된 XML 파일에 효과적으로 저장합니다.


'VBA VB.Net Code' 카테고리의 다른 글

Cell 값을 조합하기  (0) 2024.08.30
학습 04) Open API, 엑셀 VBA  (0) 2024.06.24
JSON 활용 방법  (0) 2024.06.21
엑셀 VBA 교육 사이트  (0) 2024.01.28
VBA 사용을 위한 깃 허브 구성 하기  (0) 2023.03.05