오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴

엑셀 x 네이버 블로그 발행량 조회 자동화 양식 & 함수 만들기

라이브 55 회 2021년07월03일 위캔두 Plus

보충 자료

1️⃣ 이번 강의에서 사용된 네이버 게시글 게시글 세기 - VBA 마스터 코드

Function NaverPostCount(Keyword, Optional Period = "1m")

Dim URL As String
Dim HTMLDoc As HTMLDocument
Dim strResult As String

'Dim Keyword As String: Dim Period As String
'Keyword = "파워포인트"
'Period = "1y"
'1h:1시간, 1w:1주, 1m:1달, 1y:1년, from20200101to20201231:기간지정..

'중요 알림
'블로그 발행량을 반환하는 URL이 일부 변경되었습니다.
'전체 코드 중, URL 부분은 아래 코드로 수정하여 실습을 진행해주세요! 
'URL = "https://s.search.naver.com/p/blog/search.naver?where=blog&api_type=1&query=" & Keyword & "&dup_remove=1&nso=so:r,p:" & Period & ",a:all&nx_search_query=" & Keyword

End Function

Private Function GetHttp(URL As String, Optional formText As String, _
                                Optional isWinHttp As Boolean = False, _
                                Optional RequestHeader As Variant, _
                                Optional includeMeta As Boolean = False, _
                                Optional RequestType As String = "GET") As Object
 
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ GetHttp 함수
'▶ 웹에서 데이터를 받아옵니다.
'▶ 인수 설명
'_____________URL                         : 데이터를 스크랩할 웹 페이지 주소입니다.
'_____________formText                 : Encoding 된 FormText 형식으로 보내야 할 경우, Send String에 쿼리문을 추가합니다.
'_____________isWinHttp               : WinHTTP 로 요청할지 여부입니다. Redirect가 필요할 경우 True로 입력하여 WinHttp 요청을 전송합니다.
'_____________RequestHeader       : RequestHeader를 배열로 입력합니다. 반드시 짝수(한 쌍씩 이루어진) 개수로 입력되어야 합니다.
'_____________includeMeta           : TRUE 일 경우 HTML 문서위로 ResponseText를 강제 입력합니다. Meta값이 포함되어 HTML이 작성되며 innerText를 사용할 수 없습니다. 기본값은 False 입니다.
'_____________RequestType           : 요청방식입니다. 기본값은 "GET"입니다.
'▶ 사용 예제
'Dim HtmlResult As Object
'Set htmlResult = GetHttp("https://www.naver.com")
'msgbox htmlResult.body.innerHTML
'###############################################################
 
Dim oHTMLDoc As Object: Dim objHTTP As Object
Dim HTMLDoc As Object
Dim i As Long: Dim blnAgent As Boolean: blnAgent = False
Dim sUserAgent As String: sUserAgent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Mobile Safari/537.36"
 
Application.DisplayAlerts = False
 
If Left(URL, 4) <> "http" Then URL = "http://" & URL
 
Set oHTMLDoc = CreateObject("HtmlFile")
Set HTMLDoc = CreateObject("HtmlFile")
 
If isWinHttp = False Then
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
Else
    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
End If
 
objHTTP.setTimeouts 3000, 3000, 3000, 3000
objHTTP.Open RequestType, URL, False
If Not IsMissing(RequestHeader) Then
    Dim vRequestHeader As Variant
    For Each vRequestHeader In RequestHeader
        Dim uHeader As Long: Dim Lheader As Long: Dim steps As Long
        uHeader = UBound(vRequestHeader): Lheader = LBound(vRequestHeader)
        If (uHeader - Lheader) Mod 2 = 0 Then GetHttp = CVErr(xlValue): Exit Function
        For i = Lheader To uHeader Step 2
            If vRequestHeader(i) = "User-Agent" Then blnAgent = True
            objHTTP.setRequestHeader vRequestHeader(i), vRequestHeader(i + 1)
        Next
    Next
End If
If blnAgent = False Then objHTTP.setRequestHeader "User-Agent", sUserAgent
 
objHTTP.send formText
 
If includeMeta = False Then
    With oHTMLDoc
        .Open
        .Write objHTTP.responseText
        .Close
    End With
Else
    oHTMLDoc.body.innerHTML = objHTTP.responseText
End If
 
Set GetHttp = oHTMLDoc
Set oHTMLDoc = Nothing
Set objHTTP = Nothing
 
Application.DisplayAlerts = True
 
End Function
 
Private Function Splitter(v As Variant, Cutter As String, Optional Trimmer As String)
 
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ Splitter 함수
'▶ Cutter ~ Timmer 사이의 문자를 추출합니다. (Timmer가 빈칸일 경우 Cutter 이후 문자열을 추출합니다.)
'▶ 인수 설명
'_____________v       : 문자열입니다.
'_________Cutter      : 문자열 절삭을 시작할 텍스트입니다.
'_________Trimmer  : 문자열 절삭을 종료할 텍스트입니다. (선택인수)
'▶ 사용 예제
'Dim s As String
's = "{sa;b132@drama#weekend;aabbcc"
's = Splitter(s, "@", "#")
'msgbox s   '--> "drama"를 반환합니다.
'###############################################################
 
Dim vaArr As Variant
 
On Error GoTo EH:
 
vaArr = Split(v, Cutter)(1)
If Not IsMissing(Trimmer) Then vaArr = Split(vaArr, Trimmer)(0)
 
Splitter = vaArr
 
Exit Function
 
EH:
    Splitter = ""
 
End Function

버전 안내

이번 강의는 일부 버전에서 실습이 제한됩니다.

윈도우 : 파워쿼리의 FuzzyMatch 기능은 엑셀 2021 이후 버전에서 사용 가능하며, 파워쿼리는 엑셀 2016 이후 버전부터 사용가능합니다.
Mac : Mac용 엑셀에서는 실습 진행이 불가능합니다.
댓글 13
4.7 (6개 평가)
맥스정 💎
맥스정 💎 2021.09.23 13:48
진짜 환상적이네요.... 어서 빨리 선생님 레벨에 오르고 싶네요....
woo
woo 2022.01.25 15:11
감사합니다
박수현
박수현 2023.10.03 23:01
python사용 하면 몇 초면 만드는데....
유메미
유메미 2024.04.22 10:58
보충 vba코드를 입력하고 실행 누르면 아무것도 안나옵니다
네이버페이지가 개편되서 안되는걸까요?
24년도에 하니 뷰기능이 없고 블로그로 바뀌어서 그런걸까요?
오빠두엑셀
오빠두엑셀 작성자 2024.04.22 19:29
안녕하세요. 오빠두엑셀입니다.
먼저 오류를 확인해주셔서 감사드립니다.
말씀하신 오류는 블로그 발행량을 반환하는 URL 구조가 일부 변경되어서 그런 것으로 확인 하였습니다.
코드 중 URL 부분을 아래와 같이 수정 후 다시 실행해보시겠어요? :)
URL = "https://s.search.naver.com/p/blog/search.naver?where=blog&api_type=1&query=" & Keyword & "&dup_remove=1&nso=so:r,p:" & Period & ",a:all&nx_search_query=" & Keyword
바로 해결되실겁니다.
감사합니다.
유메미
유메미 2024.05.20 11:32
안녕하세요 영상과 별개인 질문이있는데 VBA왕초보라 커서부분이 첨부된 그림처럼 두껍게 되어서 중간에 작성시 이전에 작성된부분이 계속지워지던데
이거 해결할수있는방법이있나요?
1처
오빠두엑셀
오빠두엑셀 작성자 2024.05.21 18:01
안녕하세요. 오빠두엑셀입니다.
말씀하신 상황은 키보드의 INSERT 키가 눌려 '겹쳐쓰기'가 활성화되어서 그렇습니다.
이러한 경우 INSERT 키를 다시 한번 더 눌러서 겹쳐쓰기를 비활성화하면 바로 해결됩니다.^^
감사합니다.
유메미
유메미 2024.05.21 19:26
답변감사합니다.
강민준🤗
강민준🤗 2024.08.12 08:54
좋은 강의 감사합니다🙇‍♂️
kj
kj 2024.08.20 21:35
지금은 블로그 발행량 조회가 안되는데 어떻게 가능할까요?
오빠두엑셀
오빠두엑셀 작성자 2024.08.21 05:07
안녕하세요. 오빠두엑셀 전진권입니다.
24년 8월 20일 이후, 네이버의 블로그 게시글의 주/월별 발행량을 조회하는 URL이 중단되었습니다.
따라서 본 기능은 더 이상 사용 불가하며, 블로그 게시글의 총 발행량을 조회하는 방법은 빠른 시일내에 멤버십 특강으로 제공할 예정입니다.
감사합니다.🙇‍♂️
kj
kj 2024.08.26 19:44
진권님
유튜브 오늘 업로드 되었던데,
이게 블로그 발행량 수정된 영상강의 맞을까요? 바로 실습적용해야되서요~
오빠두엑셀
오빠두엑셀 작성자 2024.08.27 10:48
안녕하세요. 오빠두엑셀 전진권입니다.
네, 맞습니다.
이번주에 업로드한 라이브 189강에서 블로그 발행량 관련하여 수정된 내용을 정리했으니 확인해보시길 바랍니다.
준비한 강의가 업무를 보시는데 도움이 될 수 있길 바랍니다. 감사합니다.