Това упражнение показва как да четете данни от уебсайт, в този случай актуални валутни курсове от Yahoo.com.
Предполага се, че четецът показва лентата за програмисти и е запознат с редактора на VBA. Ако не, моля Google „Раздел за разработчици на Excel“ или „Прозорец на кода на Excel“.
Предпоставките включват знания за попълване на комбинирани полета и дефиниране на имена.
Работната книга се състои от два листа:
Потребителският интерфейс:
Комбинираните полета „Купувай и продавай“ се позовават на местния лист с данни по-долу.
Таблицата на D11 ще бъде автоматично поставена от самия уебсайт, запазвайки потребителското форматиране.
Xlsm за това упражнение може да бъде изтеглен тук.
Изграждане на приложението сами.
Създайте лист с две комбинирани полета. Комбинираните полета ще препращат клетки на втори лист.
Комбо полетата също ще извикат кода, за да прочетат уебсайта, използвайки Промяна събитие.
Имената на валутите могат да бъдат поставени във втория лист („Валути“) от списъка по-долу, като редът на сортиране е въпрос на лични предпочитания:
| ZAR |
| Долар |
| EUR |
| GBP |
| CHF |
| AUD |
| NZD |
| JPY |
| CAD |
| SEK |
| DKK |
| NOK |
| MUR |
| HKD |
| SGD |
| ILS |
| AED |
| INR |
| CNY |
Поставете данните в колони Б и Е.
Определете имена и използвайте функциите за индекс според илюстрацията:
Тъй като имената са дефинирани в локалния лист с данни „Валути“, лист „Основен“ трябва просто да се позовава на дефинираните имена, за да получи стойността, т.е. = ПРОДАВА и = КУПЕТЕ съответно за „Основни“ клетки E10 и G10.
Ще програмираме Excel за четене в мрежата. Той обаче има свой собствен вграден процес на лентата с данни, екземпляр от който може да искате да запишете като макрос при изграждането на различни сценарии. Имайте предвид, че конфигурациите на компютъра или браузъра могат да повлияят неблагоприятно на скриптове на уеб страници.
Кодексът
Поставете модул и въведете следното:
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
Запазете работната книга като тип xlsm.
Тествайте кода, като промените стойностите на комбинираните полета, след това подобрете форматите на поставената таблица (четири знака след десетичната запетая, решетка, засенчвания?).
Повреда на Excel файлове
Понякога Excel е известен с това, че поврежда файлове при запазване, след което се опитва да направи своя собствена рутина за самовъзстановяване, която често според моя опит просто не работи. Това може да бъде пагубно за потребителя, тъй като е унищожен изходният файл (вероятно единственото ви копие). Повредени файлове на Excel могат обаче да бъдат поправени с помощта на инструменти на трети страни, спестявайки значително време и усилия.
Въведение на автора:
Феликс Хукър е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително ремонт rar архив и sql софтуерни продукти за възстановяване. За повече информация посетете WWW.datanumen.com
