Cách đọc dữ liệu từ các trang web trực tuyến bằng Excel VBA

Chia sẻ ngay bây giờ:

Bài tập này cho thấy cách đọc dữ liệu từ một trang web, trong trường hợp này là tỷ giá hối đoái cập nhật từng phút từ Yahoo.com.

Giả sử rằng người đọc đã hiển thị dải băng Nhà phát triển và quen thuộc với Trình soạn thảo VBA. Nếu không, hãy Google “Excel Developer Tab” hoặc “Excel Code Window”.

Điều kiện tiên quyết bao gồm kiến ​​thức về cách điền các hộp tổ hợp và xác định tên.

Sổ làm việc bao gồm hai tờ:

Giao diện người dùng:Giao diện người dùng

Hộp tổ hợp Mua và Bán tham chiếu bảng dữ liệu địa phương bên dưới.

Bảng tại D11 sẽ được tự động dán từ chính website, giữ nguyên định dạng của người dùng.Mua và bán tiền tệ

Xlsm cho bài tập này có thể được tải xuống đây.

Tự mình xây dựng ứng dụng.

Tạo một trang tính có hai hộp tổ hợp. Các hộp tổ hợp sẽ tham chiếu các ô trên trang tính thứ hai.

Các hộp tổ hợp cũng sẽ gọi mã để đọc trang web bằng cách sử dụng Thay đổi biến cố.

Tên tiền tệ có thể được dán vào bảng thứ hai (“Tiền tệ”) từ danh sách bên dưới, thứ tự sắp xếp tùy thuộc vào sở thích cá nhân:

ZAR
USD
EUR
GBP
CHF
AUD
NZD
JPY
CAD
SEK
DKK
NOK
MUR
HKD
SGD
ILS
AED
INR
CNY

Dán dữ liệu vào Cột B và E.

Xác định Tên và sử dụng các hàm Index theo hình minh họa:Mua và bán tiền tệ

Vì các tên đã được xác định trên bảng dữ liệu cục bộ “Tiền tệ”, nên bảng “Chính” chỉ tham chiếu đến các tên được xác định để nhận giá trị, tức là =BÁN và =BUY cho các ô “Chính” tương ứng là E10 và G10.

Chúng ta sẽ lập trình Excel để đọc web. Tuy nhiên, nó có quy trình tích hợp sẵn trên dải băng Dữ liệu, một phiên bản mà bạn có thể muốn ghi lại dưới dạng macro trong việc xây dựng các kịch bản khác nhau. Lưu ý rằng cấu hình máy tính hoặc trình duyệt có thể ảnh hưởng xấu đến tập lệnh của trang web.

Mật mã

Chèn một mô-đun và nhập thông tin sau:

Option Explicit

Sub Ticker()
  Dim currBuy As String
  Dim currSell As String

  Range("D11:F14").ClearContents      'prepare the ground for the web data
  currBuy = Range("BUY")          'get variable values from Defined Names previously set up
  currSell = Range("SELL")
  With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://finance.yahoo.com/q?s=" & currBuy & currSell & "=X", Destination:=Range("$D$11"))
    .Name = "q?s=" & currSell & currBuy & "=X"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingNone
    .WebTables = """table1"""
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
  End With
End sub

Sub DropDown2_Change()    'This event will call the routine above. Object name might differ.
    Call Ticker
End Sub

Sub DropDown1_Change()
    Call Ticker
End Sub

Lưu sổ làm việc dưới dạng xlsm.

Kiểm tra mã bằng cách thay đổi giá trị của các hộp tổ hợp, sau đó cải tiến các định dạng của bảng được dán (bốn chữ số thập phân, đường lưới, bóng?).

Tệp Excel bị hỏng

Đôi khi, Excel được biết đến là làm hỏng các tệp khi lưu, sau đó thử quy trình tự phục hồi của chính nó mà theo kinh nghiệm của tôi, thường không hoạt động. Điều này có thể gây tai họa cho người dùng vì tệp nguồn (có thể là bản sao duy nhất của bạn) bị hủy. File Excel bị hỏng tuy nhiên có thể được sửa chữa bằng các công cụ của bên thứ ba, tiết kiệm đáng kể thời gian và công sức.

Giới thiệu tác giả:

Felix Hooker là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm sửa rar lưu trữ và các sản phẩm phần mềm phục hồi sql. Để biết thêm thông tin, hãy truy cập www.datanumennăm

Chia sẻ ngay bây giờ:

Được đóng lại.