Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

วิธีที่ 1 – นำเข้าข้อมูลเฉพาะจากเว็บไซต์ไปยัง Excel VBA MsgBox

ขั้นตอน:

  • ไปที่ นักพัฒนา แท็บจาก Ribbon
  • คลิกที่ Visual Basic จาก โค้ด หมวดหมู่เพื่อเปิด Visual Basic Editor . หรือกด ALT +F11 เพื่อเปิด Visual Basic Editor .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • สิ่งนี้จะปรากฏใน Visual Basic Editor .
  • ไปที่เครื่องมือ เมนูและคลิกที่ ข้อมูลอ้างอิง .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • ข้อมูลอ้างอิง – VBAProject กล่องโต้ตอบจะปรากฏขึ้น
  • เลื่อนลงเล็กน้อยและเปิดใช้งาน Microsoft สองตัว ห้องสมุด . ทำเครื่องหมาย ไลบรารีวัตถุ Microsoft HTML และ การควบคุมอินเทอร์เน็ตของ Microsoft .
  • คลิก ตกลง .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • คลิกที่ โมดูล จาก แทรก แถบเมนูแบบเลื่อนลง

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • สิ่งนี้จะสร้าง โมดูล ในสมุดงานของคุณ
  • คัดลอกและวาง 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 .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • การดำเนินการนี้จะดึงข้อมูลที่นำเข้าข้อมูลเหล่านั้นจากเว็บไซต์และแสดงไว้ใน MsgBox .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

คำอธิบายโค้ด 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

ติ่มซำ คำสั่งใน 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

ด้วยบรรทัดนี้ เราจะได้รวมองค์ประกอบที่ระบุของหน้าเว็บ เราจำเป็นต้องได้รับชื่อชั้นเรียน ในการรับชื่อคลาสขององค์ประกอบนั้น เราต้องปฏิบัติตามคำแนะนำง่ายๆ

  • ไปที่เว็บไซต์และ คลิกขวา บนบล็อกนั้น
  • จากนั้น คลิก ตรวจสอบ .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • สิ่งนี้จะแสดง HTML และ CSS องค์ประกอบของเว็บไซต์นั้น คลิกที่ชั้นเรียนที่คุณต้องการเรียนและวางไว้ใน html.getElementsByClassName(“wikitable”) .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

MsgBox total

ซึ่งจะแสดงผลรวมใน Microsoft หน้าต่าง.

End Sub

การดำเนินการนี้จะสิ้นสุดขั้นตอน

วิธีที่ 2 – คัดลอกข้อมูลจากเว็บไซต์ไปยัง Excel

ขั้นตอน:

  • คลิกที่ไอคอนเล็กๆ ที่ บันทึก มาโคร .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • มาโครบันทึก กล่องโต้ตอบจะปรากฏขึ้น
  • ตั้งชื่อมาโคร เราตั้งชื่อมาโครว่า Get_Data .
  • คลิก ตกลง .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • ไปที่ข้อมูล แท็บจาก Ribbon
  • คลิกที่ จากเว็บ ภายใต้รับและแปลงข้อมูล .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • จากเว็บ หน้าต่างจะแสดงขึ้น
  • โดยการคลิก CTRL +วี บนแป้นพิมพ์ของคุณ ให้วาง URL ใน URL พื้นที่หลังจากเลือก พื้นฐาน .
  • กด ตกลง ปุ่ม.

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • เครื่องนำทาง กล่องโต้ตอบจะปรากฏขึ้น
  • เลือกตารางข้อมูลใดก็ได้จาก ตัวเลือกการแสดงผล เมนูที่เหมาะกับความต้องการของคุณ
  • เลือก “โหลดไปที่

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • นำเข้าข้อมูล กล่องโต้ตอบจะปรากฏขึ้น
  • เลือก ตาราง จาก “เลือกวิธีที่คุณต้องการดูข้อมูลนี้ในสมุดงานของคุณ ” และคลิกที่แผ่นงานที่มีอยู่ .
  • เลือกเซลล์ที่คุณต้องการนำเข้าข้อมูล
  • คลิก ตกลง .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • การดำเนินการนี้จะนำเข้าข้อมูลจากเว็บไซต์

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • เลือกทั้งแผ่นงานแล้วคลิก ลบ ปุ่ม Microsoft เอ็กเซล กล่องโต้ตอบจะปรากฏขึ้น ตรวจสอบให้แน่ใจว่าคุณคลิก ไม่ .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • การดำเนินการนี้จะ ลบ ข้อมูลทั้งหมด
  • ไปที่ข้อมูล จาก Ribbon แล้วคลิก รีเฟรชทั้งหมด ภายใต้ การสืบค้นและการเชื่อมต่อ .
  • รับข้อมูลทั้งหมดกลับมาในเวิร์กชีต

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • เปิด Ribbon และเลือก นักพัฒนาซอฟต์แวร์ จากเมนูแบบเลื่อนลง
  • เลือก Visual Basic เพื่อเปิด 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

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • นี่คือโค้ดมาโครอัตโนมัติ

วิธีการนำเข้าข้อมูลเว็บโดยใช้แท็บข้อมูลใน Excel

ขั้นตอน:

  • วาง URL ในเซลล์ C4 ในแผ่นงานข้อมูลการนำเข้าของเรา
  • คัดลอก URL โดยการกด CTRL + .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • ไปที่ข้อมูล แท็บจาก Ribbon
  • คลิกที่ จากเว็บ ภายใต้รับและแปลงข้อมูล .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • หน้าต่างชื่อ จากเว็บ จะปรากฏขึ้น
  • เลือก พื้นฐาน และใน URL สนาม, วาง URL โดยการกด CTRL +วี จากแป้นพิมพ์ของคุณ
  • คลิกที่ ตกลง ปุ่ม.

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • สิ่งนี้จะแสดง นาวิเกเตอร์ กล่องโต้ตอบ
  • เลือกตารางข้อมูลใด ๆ ตามความต้องการของคุณจาก ตัวเลือกการแสดงผล .
  • คลิกที่ โหลด .

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

  • การดำเนินการนี้จะนำเข้าข้อมูลที่เลือกจากเว็บไซต์นั้นและโหลดลงในไฟล์ Excel ของคุณ

การถ่ายโอนข้อมูลอย่างง่ายดาย:2 วิธี VBA ที่ได้รับการพิสูจน์แล้วในการดึงข้อมูลเว็บไซต์ลงใน Excel

ดาวน์โหลดหนังสือแบบฝึกหัด

คุณสามารถดาวน์โหลดสมุดงานและฝึกฝนร่วมกับพวกเขาได้

บทความที่เกี่ยวข้อง

  • Excel VBA:การขูดเว็บด้วย Chrome
  • Excel VBA เพื่อขูดตารางจากเว็บไซต์
  • วิธีการขูดเว็บโดยไม่ต้องใช้เบราว์เซอร์ด้วย Excel VBA
รับแบบฝึกหัด Excel ขั้นสูงพร้อมโซลูชันฟรี!