[Excel실무] 사업자번호 검색을 자동으로 돌리기

    목차
반응형

안녕하세요, 흔한공돌이입니다.

 

오늘은 다수의 사업자번호를 국세청에 검색해야 할 때 이를 좀 더 편리하게 할 수 있는 Excel VBA 코드를 소개하고자 합니다.

 

이를 위해서는 크게 두 가지의 요소가 필요합니다.

 

1. 사업자번호를 어떻게 국세청에 검색할 것인가?

 

여러 유용한 엑셀 강의로 유명한 오빠두님의 HometaxBR 함수를 활용합니다. 자세한 이용 방법은 링크를 참조하시기 바랍니다.

=HometaxBR([사업자번호])

[사업자번호] 양식은 하이픈이 포함된 형태(000-00-00000), 생략된 형태(0000000000) 모두 가능합니다.

 

2. 수많은 데이터를 어떻게 자동으로 검색할 것인가?

 

자동 채우기로 한번에 검색하면 되지 않냐 싶겠지만, 한 번에 여러 건을 검색하면 국세청 서버에서 차단이 된다고 합니다. #

따라서 일정 시간 간격을 두고 하나하나씩 검색해야 하고, 시간 지연(Time delay)을 이용하여 사업자번호를 순차적으로 검색하는 방법을 사용합니다.

 

Application.Wait (Now + TimeValue("0:00:01"))

시간 지연에 Application.Wait를 이용하는 방법도 있습니다만, 최소 시간단위가 1초인지라 검색해야 하는 사업자번호의 양이 많을 경우 상당한 시간이 소요됩니다.

 

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)
  ……
Sleep(milisecond)

이를 위해 kernel32 라이브러리의 sleep 함수를 활용합니다. 밀리초 단위까지 지연이 가능하기 때문에 위의 방법보다 더 짧은 시간을 지연시킬 수 있습니다.

테스트해본 결과 0.1초 시간지연까지 아무 문제 없이 작동하는 것을 확인했습니다. 단, 작업 환경에 따라 달라질 수 있습니다. 아래와 같은 경고창이 뜨면 시간지연이 너무 짧은 것이니 적절히 조절하시기 바랍니다.

 

시간지연이 짧아 서버에서 차단될 경우, #VALUE 오류가 뜨고 위와 같은 경고창이 뜨면서 중단된다

매크로 실행 중에 엑셀 Sheet로 창을 넘기면 HometaxBR 함수가 정상적으로 출력되지 않고 0만을 출력하게 됩니다. 이런 오류 발생 시 Exit Do를 통해 매크로를 종료시키고, 그렇지 않을 경우 공란이 나타날 때까지 반복문을 실행합니다.

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Sub hometax()
    Dim i, j As Integer
    i = 2							'시작 행 번호
    j = 0							'오류 확인용

    Do While Cells(i, 1) <> ""					'A열(사업자번호) 빈칸 아닐 경우 반복
        If Cells(i, 2) = "" Then				
            Cells(i, 2) = "=HomeTaxBR(A" & i & ")"		'B열이 공란인 경우 HometaxBR 함수 실행
            If Cells(i, 2) = "0" Then				'오류 발생 시 종료
                j = 1
                Exit Do
            Else
                Cells(i, 2).Select
                i = i + 1
                Sleep (100)					'100밀리초(0.1초) 시간지연
            End If
        Else
            i = i + 1
        End If
    Loop

    If j = 0 Then
        MsgBox ("사업자번호 확인이 완료되었습니다")		'작업 완료 시 출력
    Else
        MsgBox ("오류가 발생하여 사업자번호 확인을 중단합니다")	'오류 발생 시 출력
    End If

End Sub

 

문제 없이 코드가 실행되면 아래와 같이 사업자번호 별로 검색결과를 확인할 수 있습니다.

 

업무 특성 상 대량의 사업자번호를 검색해야 할 일이 있는데, 여러 공부를 통해 손쉬운 일 처리가 가능해졌습니다. 다른 분들께도 도움이 되었으면 좋겠습니다. 흔한공돌이였습니다.

반응형