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

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

방법 1 – 웹사이트에서 Excel VBA MsgBox로 특정 데이터 가져오기

단계:

  • 개발자로 이동 탭을 탭하세요.
  • Visual Basic을 클릭합니다. 코드에서 카테고리를 클릭하여 Visual Basic Editor를 엽니다. . 또는 ALT를 누르세요. +F11 Visual Basic Editor를 열려면 .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • Visual Basic Editor에 표시됩니다. .
  • 도구로 이동 메뉴를 클릭하고 참조를 클릭하세요. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 참조 – VBAProject 대화상자가 나타납니다.
  • 조금 아래로 스크롤하여 두 개의 Microsoft를 활성화합니다. 라이브러리 . Microsoft HTML 개체 라이브러리 확인 표시 및 Microsoft 인터넷 컨트롤 .
  • 확인을 클릭하세요. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 모듈 을 클릭하세요. 삽입 에서 드롭다운 메뉴바.

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 이렇게 하면 모듈 이 생성됩니다. 귀하의 통합 문서에 있습니다.
  • VBA 를 복사하여 붙여넣습니다. 아래에 표시된 코드입니다.

VBA 코드:

Sub Import_SpecificData()
Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim website As String
Dim total As Variant
website = "https://en.wikipedia.org/wiki/2022_FIFA_World_Cup"
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "GET", website, False
request.setRequestHeader "If-Modified-Since", "Mon, 14 Nov 2022 00:00:00 GMT"
request.send
response = StrConv(request.responseBody, vbUnicode)
html.body.innerHTML = response
total = html.getElementsByClassName("wikitable")(0).innerText
MsgBox total
End Sub
  • RubSub 를 클릭하여 코드를 실행하세요. 버튼을 누르거나 단축키 F5를 누르세요. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 이렇게 하면 데이터를 가져오고 웹사이트에서 해당 데이터를 가져와서 MsgBox에 표시합니다. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

VBA 코드 설명

Sub Import_SpecificData()

구독 코드에서 작업을 처리하는 데 사용되는 코드의 일부이지만 값을 반환하지 않습니다. 하위 프로시저라고도 합니다. 프로시저 이름을 Import_SpecificData()로 지정했습니다. .

Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim website As String
Dim total As Variant

DIM VBA의 문 '선언을 의미합니다. ”는 변수를 선언하는 데 사용해야 합니다.

website = "https://en.wikipedia.org/wiki/2022_FIFA_World_Cup"
Set request = CreateObject("MSXML2.XMLHTTP")

그러면 웹페이지를 요청하는 개체가 생성됩니다.

request.Open "GET", website, False

이 블록을 통해 우리는 어디로 가야 할지, 어떻게 가야 할지 알게 될 것입니다. 줄을 변경할 필요가 없으며 웹사이트에서 모든 종류의 데이터를 가져오는 동안 이 줄을 직접 복사할 수 있습니다.

request.setRequestHeader "If-Modified-Since", "Mon, 14 Nov 2022 00:00:00 GMT"

우리는 우리 웹사이트에서 새로운 데이터를 얻을 것입니다.

request.send

이 줄은 요청을 웹페이지로 보냅니다.

response = StrConv(request.responseBody, vbUnicode)

웹페이지 응답 데이터를 변수로 가져옵니다.

html.body.innerHTML = response

코드 줄은 데이터 참조를 더 쉽게 하기 위해 웹페이지를 HTML 개체에 넣습니다.

total = html.getElementsByClassName("wikitable")(0).innerText

이 줄을 사용하면 웹페이지의 지정된 요소 전체를 얻을 수 있습니다. 클래스 이름을 가져와야 합니다. 특정 요소의 클래스 이름을 얻으려면 간단한 지침을 따라야 합니다.

  • 웹사이트로 이동하여 마우스 오른쪽 버튼을 클릭하세요. 특정 블록에 있습니다.
  • 그런 다음 검사를 클릭하세요. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 이렇게 하면 HTML이 표시됩니다. 및 CSS 해당 웹사이트의 요소. 수강해야 하는 수업을 클릭하고 html.getElementsByClassName(“wikitable”)에 넣습니다. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

MsgBox total

그러면 Microsoft 에 총계가 표시됩니다. 창.

End Sub

절차가 종료됩니다.

방법 2 - 웹사이트에서 Excel로 데이터 스크랩

단계:

  • 녹음하는 작은 아이콘을 클릭하세요. 매크로 .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 기록 매크로 대화상자가 나타납니다.
  • 매크로 이름을 지정합니다. 매크로 이름을 Get_Data로 지정합니다. .
  • 확인을 클릭하세요. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 데이터로 이동 탭을 탭하세요.
  • 웹에서를 클릭합니다. 데이터 가져오기 및 변환에서 .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 웹에서 창이 표시됩니다.
  • CTRL을 클릭하여 +V 키보드에서 URL을 붙여넣으세요. URL에서 기본을 선택한 후 영역 .
  • 확인을 누르세요. 버튼을 누르세요.

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 탐색기 결과적으로 대화 상자가 나타납니다.
  • 표시 옵션에서 데이터 표를 선택합니다. 귀하의 요구에 맞는 메뉴를 선택하세요.
  • '다음으로 로드를 선택합니다. .”

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 데이터 가져오기 대화상자가 표시됩니다.
  • 선택 "통합 문서에서 이 데이터를 보는 방법을 선택하세요. ”를 클릭하고 기존 워크시트를 클릭합니다. .
  • 데이터를 가져오려는 셀을 선택하세요.
  • 확인을 클릭하세요. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 이렇게 하면 웹사이트에서 데이터를 가져옵니다.

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 전체 워크시트를 선택하고 삭제 를 클릭하세요. 버튼, Microsoft 엑셀 대화상자가 나타납니다. 아니요를 클릭했는지 확인하세요. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 삭제됩니다. 모든 데이터.
  • 데이터로 이동 리본에서 모두 새로고침을 클릭하세요. 쿼리 및 연결 아래 .
  • 모든 데이터를 워크시트로 다시 가져옵니다.

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 리본을 열고 개발자를 선택합니다. 드롭다운 메뉴에서 선택하세요.
  • 비주얼 베이직을 선택합니다. Visual Basic Editor를 열려면 . 또는 Visual Basic Editor ALT를 눌러도 액세스할 수 있습니다. +F11 .
  • 모듈 , VBA 매크로 를 얻게 됩니다. 거기.

VBA 코드:

Option Explicit
Sub Get_Data()
'
' Get_Data Macro
'
'
    Sheets("Get Data").Select
    Range("N11").Select
    ActiveWorkbook.Queries.Add Name:="2022 FIFA bidding (majority 12 votes)", _
        Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Web.Page(Web.Contents(""https://en.wikipedia.org/wiki/2022_FIFA_World_Cup""))," & Chr(13) _
        & "" & Chr(10) & "    Data1 = Source{1}[Data]," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes (Data1,{{""Bidders"", type text}, {""Votes Round 1"", type text}, {""Votes Round 2"", type text}, {""Votes Round 3"", type text}, {""Votes Round 4"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Changed Type"""
    Workbooks("Import Data from Website .xlsm").Connections.Add2 _
        "Query - 2022 FIFA bidding (majority 12 votes)", _
        "Connection to the '2022 FIFA bidding (majority 12 votes)' query in the workbook." _
        , Array( _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""2022 FIFA bidding (majority 12 votes)"";Extended Properties=""""" _
        , ""), "SELECT * FROM [2022 FIFA bidding (majority 12 votes)]", 2
    Application.CommandBars("Queries and Connections").Visible = False
    ActiveWorkbook.Queries.Add Name:="2022 FIFA bidding (majority 12 votes) (2)" _
        , Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Web.Page(Web.Contents(""https://en.wikipedia.org/wiki/2022_FIFA_World_Cup""))," & Chr(13) & "" & Chr(10) & "    Data1 = Source{1}[Data]," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes(Data1,{{""Bidders"", type text}, {""Votes Round 1"", type text}, {""Votes Round 2"", type text}, {""Votes Round 3"", type text}, {""Votes Round 4"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Changed Type"""
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""2022 FIFA bidding (majority 12 votes) (2)"";Extended Propertie" _
        , "s="""""), Destination:=Range("$B$2")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array( _
        "SELECT * FROM [2022 FIFA bidding (majority 12 votes) (2)]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "_2022_FIFA_bidding__majority_12_votes___2"
        .Refresh BackgroundQuery:=False
    End With
    Columns("A:A").ColumnWidth = 2.86
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Columns("G:G").ColumnWidth = 12
    Range("M26").Select
    Application.CommandBars("Queries and Connections").Visible = False
    Cells.Select
    Selection.ListObject.QueryTable.Delete
    Selection.ClearContents
    Range("B2:F9").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("B2").Select
End Sub

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 자동 매크로 코드입니다.

Excel의 데이터 탭을 사용하여 웹 데이터를 가져오는 방법

단계:

  • URL을 배치하세요. C4 셀에 데이터 가져오기 워크시트에 있습니다.
  • URL 복사 CTRL을 눌러 + .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 데이터로 이동 탭을 탭하세요.
  • 웹에서를 클릭합니다. 데이터 가져오기 및 변환에서 .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 웹에서라는 창 나타날 것입니다.
  • 기본 선택 그리고 URL에서 필드, URL 붙여넣기 CTRL을 눌러 +V 키보드에서.
  • 확인을 클릭하세요. 버튼을 누르세요.

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 탐색기가 표시됩니다. 대화 상자.
  • 표시 옵션에서 요구사항에 따라 데이터 표를 선택하세요. .
  • 로드를 클릭하세요. .

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

  • 이렇게 하면 해당 웹사이트에서 선택한 데이터를 가져와서 Excel 파일로 로드합니다.

손쉬운 데이터 전송:웹 사이트 데이터를 Excel로 가져오는 2가지 입증된 VBA 방법

연습 문제집 다운로드

워크북을 다운로드하여 연습할 수 있습니다.

관련 기사

  • Excel VBA:Chrome을 사용한 웹 스크래핑
  • 웹사이트에서 테이블을 스크랩하는 Excel VBA
  • Excel VBA를 사용하여 브라우저 없이 웹 스크래핑을 수행하는 방법
솔루션이 포함된 무료 고급 Excel 연습을 받아보세요!