Cara Membaca Data dari Halaman Web Dalam Talian dengan Excel VBA

Kongsi Sekarang:

Latihan ini menunjukkan cara membaca data dari laman web, dalam hal ini kadar pertukaran mata wang terkini dari Yahoo.com.

Diandaikan pembaca memaparkan pita Pengembang dan biasa dengan Editor VBA. Sekiranya tidak, sila "Tab Pembangun Excel" Google atau "Tetingkap Kod Excel".

Prasyarat merangkumi pengetahuan tentang mengisi kotak kombo dan menentukan nama.

Buku kerja terdiri daripada dua helaian:

Antara Muka Pengguna:Antara Muka Pengguna

Kotak kombo Beli dan Jual merujuk lembaran data tempatan di bawah.

Jadual di D11 akan ditampal secara automatik dari laman web itu sendiri, mengekalkan pemformatan pengguna.Beli dan Jual Mata Wang

Xlsm untuk latihan ini boleh dimuat turun di sini.

Membangun Permohonan Sendiri.

Buat helaian dengan dua kotak kombo. Kotak kombo akan merujuk sel pada helaian kedua.

Kotak kombo juga akan menggunakan kod untuk membaca laman web, menggunakan Tukar acara.

Nama mata wang boleh ditampal ke dalam lembaran kedua ("Mata Wang") dari senarai di bawah, urutan urutan menjadi pilihan peribadi:

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

Tampal data ke dalam Lajur B dan E.

Tentukan Nama dan gunakan fungsi Indeks seperti ilustrasi:Beli dan Jual Mata Wang

Oleh kerana nama telah ditentukan pada lembaran data tempatan "Mata Wang", lembaran "Utama" hanya merujuk pada nama yang ditentukan untuk mendapatkan nilai, yaitu = SELL dan = BUY untuk sel "Utama" E10 dan G10 masing-masing.

Kami akan memprogram Excel untuk membaca web. Namun, ia memiliki proses bawaannya sendiri pada pita Data, contoh yang mungkin ingin anda rakam sebagai makro dalam membina senario yang berbeza. Perhatikan bahawa konfigurasi komputer atau penyemak imbas boleh menjejaskan skrip halaman web.

Kod ini

Masukkan modul, dan masukkan yang berikut:

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

Simpan buku kerja sebagai jenis xlsm.

Uji kod dengan mengubah nilai kotak kombo, kemudian cantikkan format jadual yang ditampal (empat tempat perpuluhan, garis grid, bayangan?).

Kerosakan fail Excel

Excel kadang-kadang terkenal dengan kerosakan fail semasa menyimpan, selepas itu mencuba rutin pemulihan diri sendiri yang selalunya, menurut pengalaman saya, tidak berfungsi. Ini boleh menjadi bencana bagi pengguna, kerana fail sumber (mungkin satu-satunya salinan anda) yang musnah. Fail Excel yang rosak namun dapat diperbaiki dengan menggunakan alat pihak ketiga, menjimatkan banyak masa dan usaha.

Pengenalan Pengarang:

Felix Hooker adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk pembaikan rar arkib dan produk perisian pemulihan sql. Untuk maklumat lebih lanjut, lawati www.datanumen.com

Kongsi Sekarang:

Ruangan komen telah ditutup.