Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Office

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

Phương pháp 1 – Nhập dữ liệu cụ thể từ trang web vào Excel VBA MsgBox

BƯỚC:

  • Đi tới Nhà phát triển tab từ dải băng.
  • Nhấp vào Visual Basic từ danh mục để mở Trình soạn thảo Visual Basic . Hoặc nhấn ALT +F11 để mở Trình soạn thảo Visual Basic .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Điều này sẽ xuất hiện trong Trình chỉnh sửa Visual Basic .
  • Chuyển tới Công cụ trình đơn và nhấp vào Tài liệu tham khảo .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Tài liệu tham khảo – Dự án VBA hộp thoại sẽ xuất hiện.
  • Cuộn xuống một chút và kích hoạt hai Microsoft Thư viện . Dấu kiểm Thư viện đối tượng Microsoft HTMLKiểm soát Internet của Microsoft .
  • Nhấp vào OK .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Nhấp vào Mô-đun từ Chèn thanh menu thả xuống.

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Điều này sẽ tạo ra một Mô-đun trong sổ làm việc của bạn.
  • Sao chép và dán VBA mã hiển thị bên dưới.

Mã 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
  • Chạy mã bằng cách nhấp vào RubSub hoặc nhấn phím tắt F5 .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Điều này sẽ tìm nạp dữ liệu, nhập những dữ liệu đó từ trang web và hiển thị chúng vào MsgBox .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

Giải thích mã VBA

Sub Import_SpecificData()

Phụ là một phần của mã dùng để xử lý công việc trong mã nhưng sẽ không trả về bất kỳ giá trị nào. Nó còn được gọi là thủ tục con. Chúng tôi đã đặt tên cho quy trình của mình là Import_SpecificData() .

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

DIM câu lệnh trong VBA đề cập đến “tuyên bố, ” phải được sử dụng để khai báo một biến.

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

Điều này sẽ tạo ra một đối tượng thực hiện yêu cầu trang web.

request.Open "GET", website, False

Từ dãy nhà này chúng ta sẽ biết đi đâu và đi đến đó như thế nào. Bạn không cần thay đổi dòng, bạn có thể sao chép trực tiếp dòng này trong khi nhập bất kỳ loại dữ liệu nào từ bất kỳ trang web nào.

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

Chúng tôi sẽ nhận được dữ liệu mới từ trang web của mình.

request.send

Dòng này gửi yêu cầu đến trang web.

response = StrConv(request.responseBody, vbUnicode)

Chúng tôi lấy dữ liệu phản hồi của trang web thành các biến.

html.body.innerHTML = response

Dòng mã này đặt trang web vào một đối tượng HTML để giúp việc tham chiếu dữ liệu dễ dàng hơn.

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

Với dòng này, chúng ta sẽ nhận được tổng số phần tử được chỉ định của trang web. Chúng ta cần lấy tên lớp. Để có được tên lớp của phần tử cụ thể đó, chúng ta phải làm theo các hướng dẫn đơn giản.

  • Truy cập trang web và nhấp chuột phải trên khối cụ thể đó.
  • Sau đó, nhấp vào Kiểm tra .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Điều này sẽ hiển thị HTMLCSS các thành phần của trang web đó. Nhấp vào lớp bạn cần học và đặt chúng vào trong html.getElementsByClassName(“wikitable”) .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

MsgBox total

Điều này sẽ hiển thị tổng số trong Microsoft cửa sổ.

End Sub

Thao tác này sẽ kết thúc quy trình.

Phương pháp 2 – Quét dữ liệu từ trang web sang Excel

BƯỚC:

  • Nhấp vào biểu tượng nhỏ Ghi Vĩ mô .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Macro bản ghi hộp thoại sẽ xuất hiện.
  • Đặt tên cho macro. Chúng tôi đặt tên cho macro là Get_Data .
  • Nhấp vào OK .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Đi tới Dữ liệu tab từ dải băng.
  • Nhấp vào Từ Web trong Nhận và chuyển đổi dữ liệu .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Từ Web cửa sổ sẽ hiển thị.
  • Bằng cách nhấp vào CTRL +V trên bàn phím của bạn, dán URL trong URL khu vực sau khi chọn Cơ bản .
  • Nhấn nút OK nút.

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Trình điều hướng Kết quả là hộp thoại sẽ xuất hiện.
  • Chọn bất kỳ bảng dữ liệu nào từ Tùy chọn hiển thị thực đơn phù hợp với nhu cầu của bạn.
  • Chọn “Tải vào .”

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Nhập dữ liệu hộp thoại sẽ hiển thị.
  • Chọn Bảng từ “Chọn cách bạn muốn xem dữ liệu này trong sổ làm việc của mình. ” và nhấp vào Bảng tính hiện có .
  • Chọn ô nơi bạn muốn nhập dữ liệu.
  • Nhấp vào OK .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Thao tác này sẽ nhập dữ liệu từ trang web.

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Chọn toàn bộ bảng tính và nhấp vào Xóa nút, Microsoft Excel hộp thoại sẽ xuất hiện. Đảm bảo bạn nhấp vào Không .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Việc này sẽ Xóa tất cả dữ liệu.
  • Đi tới Dữ liệu từ dải băng và nhấp vào Làm mới tất cả trong Truy vấn &Kết nối .
  • Lấy lại tất cả dữ liệu trong trang tính.

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Mở dải băng và chọn Nhà phát triển từ trình đơn thả xuống.
  • Chọn Visual Basic để mở Trình soạn thảo Visual Basic . Hoặc Trình soạn thảo Visual Basic cũng có thể được truy cập bằng cách nhấn ALT +F11 .
  • Trong Mô-đun , bạn sẽ nhận được Macro VBA đó.

Mã 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

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Đây là mã macro tự động.

Cách nhập dữ liệu web bằng tab dữ liệu trong Excel

BƯỚC:

  • Đặt URL trong ô C4 trong bảng tính nhập dữ liệu của chúng tôi.
  • Sao chép URL bằng cách nhấn CTRL +C .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Đi tới Dữ liệu tab từ dải băng.
  • Nhấp vào Từ Web trong Nhận và chuyển đổi dữ liệu .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Cửa sổ có tên Từ Web sẽ xuất hiện.
  • Chọn Cơ bản và trong URL trường, dán URL bằng cách nhấn CTRL +V từ bàn phím của bạn.
  • Nhấp vào OK nút.

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Điều này sẽ hiển thị Bộ điều hướng hộp thoại.
  • Chọn bất kỳ bảng dữ liệu nào theo yêu cầu của bạn từ Tùy chọn hiển thị .
  • Nhấp vào Tải .

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

  • Thao tác này sẽ nhập dữ liệu đã chọn từ trang web đó và tải dữ liệu đó vào tệp excel của bạn.

Truyền dữ liệu dễ dàng:2 phương pháp VBA đã được chứng minh để kéo dữ liệu trang web vào Excel

Tải xuống sổ tay thực hành

Bạn có thể tải sách bài tập xuống và thực hành với chúng.

Bài viết liên quan

  • Excel VBA:Quét web bằng Chrome
  • Excel VBA để quét bảng từ trang web
  • Cách thực hiện quét web không cần trình duyệt bằng Excel VBA
Nhận MIỄN PHÍ Bài tập Excel nâng cao có Giải pháp!