Excel VBA ile Çevrimiçi Web Sayfalarından Veriler Nasıl Okunur?

Şimdi paylaş:

Bu alıştırma, bir web sitesindeki verilerin, bu durumda Yahoo.com'dan alınan güncel döviz kurlarının nasıl okunacağını gösterir.

Okuyucunun Geliştirici şeridine sahip olduğu ve VBA Editörüne aşina olduğu varsayılmaktadır. Değilse, lütfen Google "Excel Geliştirici Sekmesi" veya "Excel Kod Penceresi".

Önkoşullar, birleşik giriş kutularını doldurma ve adları tanımlama bilgisini içerir.

Çalışma kitabı iki sayfadan oluşur:

Kullanıcı Arabirimi:Kullanıcı Arayüzü

Al ve Sat birleşik kutuları, aşağıdaki yerel veri sayfasına atıfta bulunur.

D11'deki tablo, kullanıcı biçimlendirmesi korunarak web sitesinin kendisinden otomatik olarak yapıştırılacaktır.Döviz Alım Satım

Bu alıştırma için xlsm indirilebilir okuyun.

Uygulamayı Kendiniz Oluşturun.

İki birleşik giriş kutusu içeren bir sayfa oluşturun. Açılan kutular, ikinci bir sayfadaki hücrelere başvurur.

Açılır kutular ayrıca web sitesini okumak için kodu çağırır. Düzenle olay.

Para birimi adları, aşağıdaki listeden ikinci sayfaya ("Para Birimleri") yapıştırılabilir, sıralama kişisel tercih meselesidir:

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

Verileri B ve E Sütunlarına yapıştırın.

Adları tanımlayın ve Dizin işlevlerini çizime göre kullanın:Döviz Alım Satım

Adlar, "Para Birimleri" yerel veri sayfasında tanımlandığından, "Ana" sayfasının değeri elde etmek için yalnızca tanımlanmış adlara atıfta bulunması gerekir, yani sırasıyla "Ana" hücreler E10 ve G10 için =SATIŞ ve =SATIN AL.

Excel'i web'i okumak için programlayacağız. Bununla birlikte, Veri şeridinde, farklı senaryolar oluştururken bir örneğini makro olarak kaydetmek isteyebileceğiniz kendi yerleşik işlemi vardır. Bilgisayar veya tarayıcı yapılandırmalarının web sayfası komut dosyalarını olumsuz etkileyebileceğini unutmayın.

Kod

Bir modül yerleştirin ve aşağıdakileri girin:

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

Çalışma kitabını xlsm türü olarak kaydedin.

Birleşik giriş kutularının değerlerini değiştirerek kodu test edin, ardından yapıştırılan tablonun biçimlerini iyileştirin (dört ondalık basamak, kılavuz çizgileri, gölgelendirmeler?).

Excel dosyalarının bozulması

Excel'in zaman zaman dosyaları kaydederken bozduğu ve daha sonra kendi kendini kurtarma rutinini denediği biliniyor ki bu, benim deneyimime göre genellikle işe yaramıyor. Bu, yok edilen kaynak dosya (muhtemelen tek kopyanız) olduğu için kullanıcı için felaket olabilir. Hasarlı Excel dosyaları ancak üçüncü taraf araçları kullanılarak onarılabilir, bu da önemli ölçüde zaman ve emek tasarrufu sağlar.

Yazar Tanıtımı:

Felix Hooker, veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. onarım rar arşiv ve sql kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com

Şimdi paylaş:

Yoruma kapalı.