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:
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.
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:
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
