본문 바로가기
  • 환영 합니다 ! Welcome!
VBA For Windchill

학습 01) Open API, 엑셀 VBA

by ToolBOX01 2024. 6. 21.
반응형

VBA에서 WEB 서버에 어떻게 접속 하는가?

□ WinHttp 라이브러리 

WinHttpRequest는 VBA (Visual Basic for Applications)에서 사용되는 객체로, 웹 서버와 통신하여 HTTP 요청을 보내고 응답을 받을 수 있게 해줍니다. 주로 웹 페이지의 데이터를 가져오거나 API와 통신할 때 사용합니다.

쉽게 말해, WinHttpRequest는 인터넷을 통해 다른 컴퓨터와 대화할 수 있는 방법을 제공하는 도구입니다. 예를 들어, 특정 웹사이트에서 최신 뉴스를 가져오거나, 날씨 정보를 가져오는 등의 작업을 할 수 있습니다.

더보기

HTTP는 HyperText Transfer Protocol의 약자로, 웹 브라우저와 웹 서버가 서로 정보를 주고받을 때 사용하는 규칙이나 약속입니다. 쉽게 말해서, 인터넷에서 웹 페이지를 주고받기 위한 언어라고 생각하면 됩니다.

### 예를 들어 설명하자면:

1. **웹 브라우저의 역할**:
    - 우리가 컴퓨터나 스마트폰에서 웹 브라우저(예: 크롬, 사파리)를 열고, 주소창에 http://www.example.com을 입력한다고 가정해봅시다.
    - 웹 브라우저는 이 주소를 기반으로 HTTP 요청을 만듭니다. 이 요청은 "http://www.example.com이라는 웹 사이트의 내용을 보여주세요"라는 의미를 가지고 있습니다.

2. **웹 서버의 역할**:
    - http://www.example.com을 관리하는 컴퓨터(서버)는 이 요청을 받습니다.
    - 서버는 요청을 이해하고, http://www.example.com의 웹 페이지 내용을 찾아서 HTTP 응답으로 웹 브라우저에게 보냅니다. 이 응답에는 웹 페이지의 텍스트, 이미지, 비디오 등의 데이터가 포함될 수 있습니다.

3. **정보 주고받기**:
    - 웹 브라우저는 서버로부터 받은 HTTP 응답을 해석하여 우리에게 웹 페이지를 보여줍니다.

### HTTP 요청과 응답

- **HTTP 요청**: 웹 브라우저가 서버에게 보내는 메시지. "이 페이지를 주세요" 또는 "이 데이터를 서버에 저장해주세요"와 같은 요청을 포함합니다.
- **HTTP 응답**: 서버가 웹 브라우저에게 보내는 메시지. 요청한 페이지나 데이터, 또는 요청이 성공했는지 실패했는지에 대한 정보를 포함합니다.

### HTTP의 주요 특징

- **텍스트 기반**: HTTP는 사람이 읽을 수 있는 텍스트 형식으로 요청과 응답을 주고받습니다.
- **상태 코드**: HTTP 응답에는 상태 코드가 포함되어 있습니다. 예를 들어, 200은 요청이 성공했음을 의미하고, 404는 요청한 페이지를 찾을 수 없음을 의미합니다.
- **무상태 프로토콜**: HTTP는 각 요청이 독립적으로 처리됩니다. 즉, 이전 요청에 대한 정보가 다음 요청에 영향을 주지 않습니다. 하지만 이를 보완하기 위해 쿠키와 같은 기술이 사용됩니다.

### 간단한 비유

HTTP를 우체국과 비교할 수 있습니다:

- **HTTP 요청**은 우리가 편지를 우체국에 보내는 것과 같습니다. 편지에는 우리가 요청하는 내용이 담겨 있습니다.
- **HTTP 응답**은 우체국이 우리에게 답장을 보내는 것과 같습니다. 답장에는 우리가 요청한 정보나 그에 대한 답변이 담겨 있습니다.

HTTP는 우리가 인터넷에서 웹 페이지를 탐색하고, 데이터를 주고받는 데 중요한 역할을 하는 기본적인 통신 규칙입니다.

 

▷ ▷ 기본 사용 방법

  1. WinHttpRequest 객체 생성: 먼저 WinHttpRequest 객체를 만들어야 합니다.
  2. 요청 설정: 어떤 URL로 요청을 보낼지 설정하고, 요청 방식을 정합니다 (GET, POST 등).
  3. 요청 보내기: 설정한 URL로 실제 요청을 보냅니다.
  4. 응답 받기: 서버에서 보내온 응답을 받아서 처리합니다.

 

Option Explicit
Sub Open_API()

        Dim strURL, Filename As String
        Dim WCHTTP As New WinHttpRequest
        Dim vData() As Byte
        
        strURL = "https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=인증코드"
        WCHTTP.Open "GET", strURL, False
        WCHTTP.Send
        
        Filename = "G:\DART\DART_MASTER.ZIP"
        vData = WCHTTP.ResponseBody
        
        Open Filename For Binary Access Write As #1
        
        Put #1, 1, vData
        Close #1

End Sub

 

1. WinHttpRequest 객체 생성 코드

Dim WCHTTP As WinHttpRequest
Set WCHTTP = New WinHttpRequest

이 부분은 실제로 WinHttpRequest 객체를 생성하고, 그것을 WCHTTP 변수에 할당하는 것입니다.

Set: 객체를 변수에 할당할 때 사용하는 키워드입니다.
WCHTTP: 우리가 할당할 객체를 담을 변수입니다.
New WinHttpRequest: 새로운 WinHttpRequest 객체를 생성합니다.
쉽게 말해서, 이 코드는 "새로운 WinHttpRequest 객체를 만들어서, 그것을 WCHTTP라는 변수에 담아"라는 의미입니다.

 

2. 요청 설정

strURL = "https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=인증코드
WCHTTP.Open "GET", strURL, False

WEB 서버에서 제공 하는 Open API를 참고 합니다

 

참고) WinHttpRequest.Open 방법은?

 

VBA 웹파싱

http://bizanalytics.tistory.com/37  를 참고했습니다.1. Winhttp를 이용하는 방법 -GET.POS...

blog.naver.com

 

3. 요청 보내기:

WCHTTP.Send

4. 응답 받기: 

vData = WCHTTP.ResponseBody

ResponseBody : 웹으로부터 수신된 데이터를 반환합니다.

ResponseStream : 웹으로부터 수신된 스트림을 반환합니다.
ResponseText : 웹으로부터 수신된 텍스트를 반환합니다.

"웹으로부터 수신된 스트림을 반환합니다"는 프로그래밍 또는 데이터 처리에서 주로 사용하는 용어로, 
다음과 같은 의미를 가질 수 있습니다:

1. **스트림(Stream)**: 스트림은 데이터를 순차적으로 처리하는 방식으로, 데이터가 한 번에 모두 
로드되지 않고 필요할 때마다 조금씩 처리될 수 있습니다. 이는 특히 큰 데이터 세트를 다룰 때 메모리 
효율성을 높이는 데 유리합니다.

2. **웹으로부터 수신된**: 웹으로부터 데이터를 받는다는 의미입니다. 이는 일반적으로 HTTP 요청을 
통해 웹 서버에서 데이터를 가져오는 것을 의미합니다. 
예를 들어, 파일 다운로드, API 응답, 웹 페이지의 콘텐츠 등을 포함할 수 있습니다.

3. **반환합니다**: 이 데이터 스트림을 호출자에게 돌려준다는 의미입니다. 즉, 함수나 메서드가 
실행되어 그 결과로 데이터를 스트림 형태로 제공한다는 것입니다.

종합하면, "웹으로부터 수신된 스트림을 반환합니다"는 다음과 같이 해석할 수 있습니다:
어떤 프로그램이나 함수가 웹 서버에 요청을 보내고, 그 응답으로 오는 데이터를 스트림 형태로 받아 
이를 호출자에게 반환한다는 뜻입니다. 이 방식은 특히 큰 데이터 파일을 효율적으로 처리하거나 
실시간 데이터를 처리할 때 유용합니다. 예를 들어, 비디오 스트리밍 서비스에서 비디오 파일을 
한 번에 모두 다운로드하지 않고, 필요한 부분만 스트리밍으로 받아서 재생하는 경우가 이에 해당합니다.

 

▷ ▷ 프로그램 원본 동영상

 

프로그햄 원번 사이트

 

기업 재무정보 자동 가져오기 (Open API, 엑셀VBA)

오늘은 지인의 부탁으로 기업 재무정보를 가져오는 매크로를 만들어 보도록 하겠습니다. 이번에 사용할 매...

blog.naver.com

 

 


다음 학습 과정

 

 

학습 02) Open API, 엑셀 VBA

Dart Open API에서 개발가이드 → 상장기업 재무정보 → 단일회사 주요계정에서 "스튜디오드래곤" 재무 정보를 가져오는 프로그램을 만들어 봅니다. WinHTTP 라이버리를 활용하여 "Get" 키로 URL 정보

tool-2020.tistory.com

 

아래의 사이트에서 다양한 정보를 받을수 있습니다

사이트 : https://dart.fss.or.kr/main.do

 

전자공시시스템

많이 본 문서 최근 3영업일 기준 가장 많이 본 공시를 보여줍니다.

dart.fss.or.kr

 

 

'VBA For Windchill' 카테고리의 다른 글

DOM (Document Object Model) 이란?  (0) 2024.06.30
VBA Web Parsing 1/2  (0) 2024.06.30
json 파일 읽기  (0) 2024.06.26
Windchill & VBA 01) 서비스에서 NONCE 토큰 가져오기  (0) 2024.06.25
학습 02) Open API, 엑셀 VBA  (0) 2024.06.22