Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

World Wide Web에는 방대한 유용한 데이터가 포함되어 있다는 것은 잘 알려져 있습니다. 그러나 어떤 종류의 분석을 수행하기 전에 데이터를 Microsoft Excel로 가져와야 합니다. 이러한 종류의 작업을 완료하는 데 사용할 수 있는 두 가지 방법이 있습니다.

웹에서 수동으로 외부 데이터 가져오기

이 웹 페이지에서 최고의 수익 창출 영화에 대한 수익을 다운로드하려는 경우 여기에서 쉽게 수행하는 방법을 보여줍니다.

Microsoft Excel을 열고 데이터를 클릭합니다. 탭의 외부 데이터 가져오기 그룹에서 웹에서를 클릭합니다. . 새 웹 쿼리 이후 대화 상자가 나타나면 웹 주소(https://www.the-numbers.com/movie/records/All-Time-Worldwide-Box-Office)를 주소에 복사합니다. 필드를 클릭하고 이동을 클릭합니다. 단추. Excel은 그림 1.1과 같이 웹 페이지 다운로드를 시작합니다. 아니요를 클릭하세요. 스크립트 오류 가 발생하는 경우 아래 그림과 유사한 경고 상자. 상자가 사라지고 가져오기 프로세스에 영향을 주지 않습니다.

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 1.1

새 웹 쿼리 대화 상자의 오른쪽 상단에 있는 노란색 상자에 화살표가 있습니다. 클릭하면 표 앞에 유사한 아이콘을 표시할지 여부를 결정할 수 있습니다. 예를 들어, 그림 1.2의 왼쪽 패널에 있는 테이블 옆에는 화살표 아이콘이 없습니다. 화살표 버튼을 클릭하면 아이콘이 표시됩니다(오른쪽 패널에).

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 1.2 [전체보기를 보려면 이미지를 클릭하십시오]

선택하려는 테이블 옆에 있는 화살표 아이콘을 클릭합니다. 아이콘과 표는 그림 1.3의 왼쪽 패널에 표시된 것과 유사하게 변경됩니다. 가져오기를 클릭한 후; 데이터 가져오기 대화 상자가 표시됩니다. 데이터를 넣을 범위(여기서는 A열부터 H열까지)를 채우고 확인을 클릭합니다. . 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 1.3 [전체보기를 보려면 이미지를 클릭하십시오]

확인을 클릭하면 데이터를 Excel로 가져옵니다. . 표 내의 셀을 마우스 오른쪽 버튼으로 클릭하고 새로고침을 선택하면 , Excel이 나가서 웹 페이지에서 가장 최근 데이터를 가져옵니다. 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 1.4

또한 쿼리 데이터를 원하는 방식으로 새로 고칠 수도 있습니다. 표 내의 아무 셀이나 마우스 오른쪽 버튼으로 클릭하고 데이터 범위 속성을 선택합니다. . 프롬프트된 외부 데이터 범위 속성에서 대화 상자에서 새로 고침 제어를 변경할 수 있습니다. 스타일을 변경하는 설정. 예를 들어, 60분마다 또는 파일이 열릴 때 새로고침되도록 쿼리를 지정할 수 있습니다.

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

VBA 프로그래밍을 사용하여 데이터 스크랩

VBA 프로그래밍은 웹 페이지에서 데이터를 스크랩하는 데 사용할 수 있습니다. 첫 번째 접근 방식과 비교할 때 어렵지만 훨씬 더 유용합니다. 또한 VBA 프로그래밍을 사용하여 데이터를 스크랩하는 방법을 배우기 전에 HTML이 무엇인지 이해해야 합니다. HTML에 대해 전혀 모르거나 거의 모르는 경우 이 웹사이트에서 HTML에 대한 기본 지식을 배우는 것이 좋습니다. 그리고 여기에서 VBA를 사용하여 웹 스크래핑과 관련된 거의 모든 것을 배울 수 있습니다. 이 기사에서는 두 가지 예만 보여줍니다.

한 웹페이지에서 데이터 스크랩

이 웹 페이지에서 회사 이름, 이메일 주소 및 연락처 이름을 추출하려고 한다고 가정합니다. 이 웹 페이지를 열면 하단에 연락처 블록이 있음을 알 수 있습니다. 그림 2.1은 접점 블록과 해당 소스 코드를 보여줍니다. 빨간색 상자에 있는 정보가 우리가 필요로 하는 것입니다. 그리고 녹색 밑줄이 있는 것들은 정확히 우리가 추출해야 하는 것입니다.

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 2.1

다음 코드는 위에서 요청한 정보를 추출하여 첫 ​​번째 워크시트에 넣는 데 도움이 됩니다.

소스 코드 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?
Sub Retrieve_Click()
 
'Create InternetExplorer

Set IE = CreateObject("InternetExplorer.Application")
 
'Let's not see the browser window

IE.Visible = False
 
'Open the web page

IE.Navigate "https://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8160044431&folderid=1736"
 
'Wait while IE is loading

Do While IE.readyState <> 4 Or IE.Busy = True
 
DoEvents
 
Loop
 
'Retrieve company name, email address & contact information

Set contactobj = IE.document.getElementsByClassName("contact-details block dark")
 
htext = contactobj(0).innerHTML
 
MsgBox htext
 
If InStr(htext, "<p>Company Name: ") Then
 
ThisWorkbook.Worksheets(1).Cells(1, 1) = Split(Split(htext, "<p>Company Name: ")(1), "<br")(0)
 
End If
 
If InStr(htext, "mailto:") Then
 
ThisWorkbook.Worksheets(1).Cells(2, 1) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0)
 
End If
 
If InStr(htext, "<p>Name: ") Then
 
ThisWorkbook.Worksheets(1).Cells(3, 1) = Split(Split(htext, "<p>Name: ")(1), "<br")(0)
 
End If
 
ThisWorkbook.Worksheets(1).Cells(4, 1) = IE.LocationURL
 
ThisWorkbook.Save
 
Set IE = Nothing
 
Set contactobj = Nothing
 
End Sub

"IE.document.getElementsByClassName("contact-details block dark")"을 사용하면 클래스 이름이 contact-details block dark인 모든 요소를 ​​가져올 수 있습니다. 이 웹 페이지는 HTML 요소에 사용할 수 있는 거의 모든 속성과 메서드를 나열합니다. 자신의 문제에 적합한 것을 선택할 수 있습니다.

innerHTML 속성을 사용하면 HTML 요소의 내용을 설정하거나 반환할 수 있습니다. 우리의 경우 "contact-details block dark"라는 클래스 이름을 가진 요소의 내용을 반환하고 변수 htext로 설정했습니다. 내용(그림 2.2)은 'Msgbox htext'로 확인할 수 있습니다.

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 2.2

텍스트가 잘 구성되어 있음을 알 수 있습니다. 그래서 SPLIT 함수를 사용하여 필요한 것을 추출할 수 있습니다. 예를 들어 "

Company Name:"을 구분 기호로 사용하고 "Split(htext, "

Company Name:")(1)" 수식은 "

Company Name:". 새로 반환된 이 텍스트의 경우 "

그림 2.2에서 확인을 클릭하면 요청된 데이터를 웹에서 Excel 워크시트로 가져올 수 있습니다. 예를 들어 A1 셀에는 회사 이름이 포함되어 있고 A4 셀에는 회사 웹 페이지 주소가 포함되어 있습니다.

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 2.3

통합 문서를 저장하기 전에 아래 코드를 추가하면 A4 셀에 하이퍼링크를 추가할 수 있습니다.

소스 코드 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?
'Add hyperlink

ThisWorkbook.Worksheets(1).Hyperlinks.Add ThisWorkbook.Worksheets(1).Cells(4, 1), ThisWorkbook.Worksheets(1).Cells(4, 1)

A4 셀을 클릭하면 웹 페이지를 다시 방문할 수 있습니다. 이것은 많은 회사의 데이터를 검색해야 할 때 특히 유용합니다. 하이퍼링크를 클릭하여 해당 웹 페이지를 다시 방문하고 나중에 검토하는 동안 수동으로 정보를 추가하거나 업데이트할 수 있기 때문입니다.

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 2.4

유사한 수치

  • Excel VBA로 다른 통합 문서를 열고 데이터를 복사하는 방법
  • [수정됨!] 개체 통합 문서의 메서드 열기 실패(4개 솔루션)
  • 배열을 셀 값으로 채우기 위한 Excel VBA(적합한 예 4개)
  • VBA를 사용하여 통합 문서를 열고 매크로를 실행하는 방법(예제 4개)

웹 페이지와 상호작용

위의 예는 하나의 정적 웹 페이지에서 데이터를 검색하는 방법을 보여줍니다. 그러나 많은 양의 데이터를 검색하기 위해 웹 페이지와 상호 작용한 것을 추출해야 하는 경우가 많습니다. 그림 3.1을 보십시오. 위 예제의 웹 페이지에 액세스하는 방법을 보여줍니다. 업종도 많고 업종별로 회사도 많다는 것을 알 수 있습니다. 예를 들어, 농업 관련 산업에는 651개의 회사가 있습니다. 모든 산업에서 모든 회사의 연락처 정보를 추출하려면 어떻게 해야 합니까?

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 3.1 [전체보기를 보려면 이미지를 클릭하십시오]

글쎄요, 요점은 VBA가 우리가 수동으로 하는 것과 같이 웹 페이지와 상호 작용하도록 하는 방법입니다. S.W.I.S Advantage를 예로 들어 보겠습니다. 일반적으로 Excel에서 Agribusiness(그림 3.1의 상단 패널)를 클릭하여 IE를 실행하여 두 번째 웹 페이지로 이동할 수 있기를 바랍니다. 두 번째 웹 페이지(그림 3.1의 하단 패널)에서 Excel이 S.W.I.S Advantage를 클릭하면 IE가 그림 2.1과 같은 페이지로 안내하여 S.W.I.S Advantage의 연락처 정보를 검색할 수 있습니다.

Visual Basic Editor에 다음 코드를 입력하고 코드를 제출하면 IE가 열리는 것을 볼 수 있습니다. 첫 번째 웹 페이지가 나타난 다음 두 번째 웹 페이지가 나타납니다. 여기에서 드롭다운 목록 요소를 가져오고, 옵션을 선택하고, 옵션을 선택한 후 이벤트를 트리거하는 방법을 배웁니다. "m =IE.document.getElementsByTagName("option").Length – 1"은 총 옵션 수를 제공합니다. 다음 루프에 사용할 수 있습니다.

소스 코드 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?
Sub retrieve()
 
'Create InternetExplorer

Set IE = CreateObject("InternetExplorer.Application")
 
'Let's see the browser window

IE.Visible = True
 
'Open the web page

IE.Navigate "https://www.austrade.gov.au/international/buy#"
 
'Wait while IE is loading

Do While IE.Busy
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
Application.Wait (Now + TimeValue("00:00:10"))
 
'Part 1 - Select dropdown list and trigger event after you select one option

Set selectobj = IE.document.getElementsByTagName("select")
 
m = IE.document.getElementsByTagName("option").Length - 1
 
selectobj(0).selectedIndex = 1
 
selectobj(0).FireEvent ("onchange")
 
'Wait while IE is loading

Do While IE.readyState <> 4 Or IE.Busy = True
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
Application.Wait (Now + TimeValue("00:00:10"))
 
End Sub

코드의 이 부분은 Excel에서 이름을 클릭한 후 그림 2.1에 표시된 웹 페이지로 안내할 수 있습니다. 클래스 이름이 "Name"인 요소에는 모든 회사의 이름이 포함됩니다. Searchobj는 컬렉션이고 searchobj(i)는 (i+1) 번째 를 반환할 수 있습니다. 물체. 예를 들어 searchobj(1).Click을 사용하면 RIDLEY CORPORATION(Melbourne)의 웹 페이지를 방문할 수 있습니다.

소스 코드 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?
'Part 2 - Select company Name

Set searchobj = IE.document.getElementsByClassName("Name")
 
searchobj(0).Click
 
'Wait while IE is loading

Do While IE.readyState <> 4 Or IE.Busy = True
 
DoEvents
 
Loop

마지막으로 IE를 열고 웹 페이지를 탐색하고 데이터를 추출하는 과정을 보여주는 전체 코드입니다. 추출된 데이터는 그림 2.4와 동일합니다.

소스 코드 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?
Sub Retrieve()
 
'Create InternetExplorer

Set IE = CreateObject("InternetExplorer.Application")
 
'Let's see the browser window

IE.Visible = True
 
'Open the web page

IE.Navigate "https://www.austrade.gov.au/international/buy#"
 
'Wait while IE is loading

Do While IE.Busy
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
Application.Wait (Now + TimeValue("00:00:10"))
 
'Part 1 - Select dropdown list and trigger event after you select one option

Set selectobj = IE.document.getElementsByTagName("select")
 
m = IE.document.getElementsByTagName("option").Length - 1
 
selectobj(0).selectedIndex = 1
 
selectobj(0).FireEvent ("onchange")
 
'Wait while IE is loading

Do While IE.readyState <> 4 Or IE.Busy = True
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
Application.Wait (Now + TimeValue("00:00:10"))
 
'Part 2 - Select company Name

Set searchobj = IE.document.getElementsByClassName("Name")
 
searchobj(0).Click
 
'Wait while IE is loading

Do While IE.readyState <> 4 Or IE.Busy = True
 
DoEvents
 
Loop
 
'Part 3 - Retrieve company name, email address & contact information

Set contactobj = IE.document.getElementsByClassName("contact-details block dark")
 
htext = contactobj(0).innerHTML
 
If InStr(htext, "<p>Company Name: ") Then
 
ThisWorkbook.Worksheets(1).Cells(1, 1) = Split(Split(htext, "<p>Company Name: ")(1), "<br")(0)
 
End If
 
If InStr(htext, "mailto:") Then
 
ThisWorkbook.Worksheets(1).Cells(2, 1) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0)
 
End If
 
If InStr(htext, "<p>Name: ") Then
 
ThisWorkbook.Worksheets(1).Cells(3, 1) = Split(Split(htext, "<p>Name: ")(1), "<br")(0)
 
End If
 
ThisWorkbook.Worksheets(1).Cells(4, 1) = IE.LocationURL
 
'Add hyperlink

ThisWorkbook.Worksheets(1).Hyperlinks.Add ThisWorkbook.Worksheets(1).Cells(4, 1), ThisWorkbook.Worksheets(1).Cells(4, 1)
 
End Sub

사실, 우리가 해야 할 일은 모든 산업의 모든 회사에 대한 연락처 정보를 추출하는 것이므로 이 작업을 완료하려면 for 루프 문을 사용해야 합니다. 다음은 전체 코드입니다. 또한 이 문서의 끝에서 다운로드할 수 있는 모든 회사에 대한 연락처 정보 검색.xlsm에서 코드를 찾을 수 있습니다.

소스 코드 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까? 웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?
Sub Retrieve()
 
For idex = 2 To 18
 
'Create InternetExplorer

Set IE = CreateObject("InternetExplorer.Application")
 
'Let's see the browser window

IE.Visible = False
 
'Open the web page

IE.Navigate "https://www.austrade.gov.au/international/buy#"
 
'Wait while IE is loading

Do While IE.Busy
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
Application.Wait (Now + TimeValue("00:00:10"))
 
idexn = idex - 1
 
'Part 1 - Select dropdown

Set selectobj = IE.document.getElementsByTagName("select")
 
m = IE.document.getElementsByTagName("option").Length - 1
 
selectobj(0).selectedIndex = idexn
 
selectobj(0).FireEvent ("onchange")
 
'Wait while IE is loading

Do While IE.readyState <> 4 Or IE.Busy = True
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
Application.Wait (Now + TimeValue("00:00:10"))
 
wurl = IE.LocationURL
 
tot = IE.document.getElementsByClassName("SearchTotal")(0).innerHTML
 
pg = Int(tot / 25) + 1
 
Max = (tot Mod 25) - 1
 
'Part 2 - Select Class = "Name"

a = 2
 
For j = 1 To pg
 
If j = 1 Then
 
IE.Navigate (wurl)
 
Else
 
IE.Navigate (wurl & "&pg=" & j)
 
End If
 
Do While IE.Busy
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
If j <> pg Then
 
For i = 1 To 24
 
Set searchobj = IE.document.getElementsByClassName("Name")
 
searchobj(i).Click
 
'Wait while IE is loading

Do While IE.readyState <> 4 Or IE.Busy = True
 
DoEvents
 
Loop
 
'Part 3 - Retrieve company name, email address & contact information

Set contactobj = IE.document.getElementsByClassName("contact-details block dark")
 
htext = contactobj(0).innerHTML
 
ThisWorkbook.Worksheets(idex).Cells(a, 1) = j
 
ThisWorkbook.Worksheets(idex).Cells(a, 2) = a - 1
 
If InStr(htext, "<p>Company Name: ") Then
 
ThisWorkbook.Worksheets(idex).Cells(a, 3) = Split(Split(htext, "<p>Company Name: ")(1), "<br")(0)
 
End If
 
If InStr(htext, "mailto:") Then
 
ThisWorkbook.Worksheets(idex).Cells(a, 4) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0)
 
End If
 
If InStr(htext, "<p>Name: ") Then
 
ThisWorkbook.Worksheets(idex).Cells(a, 5) = Split(Split(htext, "<p>Name: ")(1), "<br")(0)
 
End If
 
ThisWorkbook.Worksheets(idex).Cells(a, 6) = IE.LocationURL
 
IE.GoBack
 
Do While IE.Busy
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
a = a + 1
 
Next i
 
Else
 
For i = 0 To Max
 
Set searchobj = IE.document.getElementsByClassName("Name")
 
searchobj(i).Click
 
'Wait while IE is loading

Do While IE.readyState <> 4 Or IE.Busy = True
 
DoEvents
 
Loop
 
'Part 3 - Retrieve company name, email address & contact information

Set contactobj = IE.document.getElementsByClassName("contact-details block dark")
 
htext = contactobj(0).innerHTML
 
ThisWorkbook.Worksheets(idex).Cells(a, 1) = j
 
ThisWorkbook.Worksheets(idex).Cells(a, 2) = a - 1
 
If InStr(htext, "<p>Company Name: ") Then
 
ThisWorkbook.Worksheets(idex).Cells(a, 3) = Split(Split(htext, "<p>Company Name: ")(1), "<br")(0)
 
End If
 
If InStr(htext, "mailto:") Then
 
ThisWorkbook.Worksheets(idex).Cells(a, 4) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0)
 
End If
 
If InStr(htext, "<p>Name: ") Then
 
ThisWorkbook.Worksheets(idex).Cells(a, 5) = Split(Split(htext, "<p>Name: ")(1), "<br")(0)
 
End If
 
ThisWorkbook.Worksheets(idex).Cells(a, 6) = IE.LocationURL
 
ThisWorkbook.Worksheets(idex).Hyperlinks.Add ThisWorkbook.Worksheets(idex).Cells(a, 6), ThisWorkbook.Worksheets(idex).Cells(a, 6)
 
IE.GoBack
 
Do While IE.Busy
 
Application.Wait DateAdd("s", 1, Now)
 
Loop
 
a = a + 1
 
Next i
 
End If
 
ThisWorkbook.Save
 
Next j
 
Set IE = Nothing
 
Set contactobj = Nothing
 
Next idex
 
End Sub

내가 설명해야 할 유일한 요점은 그림 3.2에 나와 있습니다. 하나의 웹에는 최대 25개의 회사만 나열할 수 있습니다. 회사의 총 수가 25개보다 크면 한 페이지 이상이 됩니다. 그림 3.2는 첫 번째 페이지 이후에 페이지 주소를 얻는 규칙이 있음을 보여줍니다. 첫 번째 페이지의 주소인 "&pg="와 실제 페이지 번호를 연결한 결과입니다. 그리고 마지막 페이지 이전의 모든 페이지에 대해 총 개체 수는 25입니다.  "IE.document.getElementsByClassName("SearchTotal")(0).innerHTML"은 산업 내 기업의 총 수를 반환할 수 있습니다. 우리의 경우 651이 됩니다. "Int(tot / 25) + 1"은 총 페이지 수를 얻을 수 있습니다. 그리고 "Max =(tot Mod 25) – 1"은 마지막 페이지의 최대 회사 수를 반환할 수 있습니다. 여기에서 멈추고 이 아이디어를 코드에 적용하는 방법을 알아내도록 할게요. 코드를 파악하는 것이 훨씬 더 나은 접근 방식입니다. 질문이 있으면 댓글을 남길 수 있습니다.

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 3.2

다음은 최종 Excel의 일부를 보여줍니다. 한 산업에 속한 모든 회사의 연락처 정보가 하나의 워크시트에 정리되어 있습니다.

웹사이트에서 Excel로 데이터를 가져오는 방법은 무엇입니까?

그림 3.3 [전체보기를 보려면 이미지를 클릭하십시오]

작업 파일 다운로드

아래 링크에서 작업 파일을 다운로드하세요.

웹에서 Excel로 데이터 가져오기.rar

관련 기사

  • 웹사이트에서 Excel로 데이터를 자동으로 추출하는 방법은 무엇입니까?
  •  Word에서 Excel로 데이터(문장, 단락, 표, 주석) 가져오기
  • 6 최고의 Excel VBA 프로그래밍 책(초보자 및 고급 사용자용)
  • Excel VBA 프로그래밍 및 매크로 배우기(무료 자습서 – 단계별)
  • Excel VBA 코딩 팁
  • VBA로 할 수 있는 작업
  • VBA 매크로 소개