배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   공통
검색어:   Web Query, 웹쿼리
제목:   Web Query Automation
     
 

새 페이지 1

  STEP> Web Query Automation


웹 쿼리(Web Query)는 엑셀2002의 새로운 기능 중 하나입니다. 수시로 갱신되는 정보성 HTML문서의 내용을 Copy&Paste가 아닌 자동으로 워크시트로 불러올 수 있습니다.

웹 쿼리(Web Query)가 업데이트될때마다 그와 동시에 다른 셀 영역으로 데이터를 복사하고자 합니다. 위의 그림을 보면 "A4:G4"영역을 그 아래의 셀 영역에 계속 추가해서 붙이고 있습니다.

"웹 쿼리(Web Query)가 업데이트될때마다" 라는 말 속에는 이벤트(Event)를 이용하라는 의미가 내포되어 있습니다. 그리고 웹 쿼리(Web Query)의 이벤트를 사용하려면 웹 쿼리(Web Query)개체를 클래스 모듈로 재포장합니다.

그래서 클래스를 하나 만들어야 합니다. 다음은 클래스 모듈입니다.

Option Explicit

// QueryTable개체를 사용
Public WithEvents qtQueryTable As QueryTable 

// 작업 워크시트 멤버 변수
Private m_Sht       As Worksheet

Sub InitQueryEvent(QT As Object)
// QueryTable개체변수에 웹쿼리 개체를 지정
    Set qtQueryTable = QT
End Sub

Private Sub qtQueryTable_AfterRefresh(ByVal Success As Boolean)
// 쿼리 갱신후 이벤트 프로시져

// Success는 쿼리의 성공여부를 알려주는 매개변수임
// 쿼리가 성공하면 qtQueryTableCopy 프로시져를 호출하여
// 다른 셀 영역에 복사함
    If Success Then Call qtQueryTableCopy
End Sub 

Private Sub qtQueryTableCopy()
// 쿼리복사 프로시져 

    Dim row         As Long
    Dim rngSrc      As Range
    Dim rngTarget   As Range         

    // 복사할 행의 위치
    row = m_Sht.Range("A65536").End(xlUp).row + 1   

    // 원본 쿼리영역중 복사할 부분
    Set rngSrc = m_Sht.Range("A4:G4")   

    // 붙여 넣을 영역
    Set rngTarget = m_Sht.Range(m_Sht.Cells(row, 1), m_Sht.Cells(row, 1))

   // Range개체의 Copy메소드를 사용하여 복사한다
    rngSrc.Copy Destination:=rngTarget    

End Sub

Public Property Let Worksheet(ByVal vNewValue As Variant)
// 작업 워크시트 멤버 변수에 해당 워크시트를 지정한다
    Set m_Sht = vNewValue
End Property

이번에는 위의 클래스 모듈을 이용하는 워크시트에 코딩을 합니다.


// Class1개체변수를 선언

Dim clsQueryTable As New Class1 

Sub RunInitQTEvent(Optional FakeArg As Integer)
// clsQueryTable개체변수 설정

    // 대상 워크시트 지정
    clsQueryTable.Worksheet = Me   

    // 대상 웹쿼리 지정
    clsQueryTable.InitQueryEvent QT:=Sheet1.QueryTables(1)
End Sub 

Private Sub Worksheet_Activate()
// 워크시트가 활성화될때마다 clsQueryTable개체변수 설정
    RunInitQTEvent
End Sub
 

기본적으로 웹 쿼리는  외부 데이터 도구모음의 새로 고침 단추를 클릭하여 쿼리를 갱신합니다. 그러나 이마저 자동으로 하려면 외부 데이터 도구모음의 데이터 범위 등록 정보를 클릭하여 대화상자에서 새로 고침 간격을 지정하면 워크시트를 열어 두는 것 만으로도 자동으로 데이터가 모아질 것입니다.