To ćwiczenie pokazuje, jak odczytywać dane ze strony internetowej, w tym przypadku aktualne kursy wymiany walut z Yahoo.com.
Zakłada się, że czytelnik ma wyświetloną wstążkę programisty i zna edytor VBA. Jeśli nie, wybierz Google „Excel Developer Tab” lub „Excel Code Window”.
Wymagania wstępne obejmują znajomość wypełniania pól kombi i definiowania nazw.
Skoroszyt składa się z dwóch arkuszy:
Interfejs użytkownika:
Pola kombi Kup i Sprzedaj odnoszą się do lokalnego arkusza danych poniżej.
Tabela w D11 zostanie automatycznie wklejona z samej witryny, zachowując formatowanie użytkownika.
Plik xlsm do tego ćwiczenia można pobrać w tym miejscu.
Samodzielne tworzenie aplikacji.
Utwórz arkusz z dwoma polami kombi. Pola kombi będą odwoływać się do komórek na drugim arkuszu.
Pola kombi będą również przywoływać kod, aby odczytać stronę internetową, używając , zmiana zdarzenie.
Nazwy walut można wkleić do drugiego arkusza („Waluty”) z poniższej listy, porządek sortowania jest kwestią osobistych preferencji:
| ZAR |
| USD |
| EUR |
| GBP |
| CHF |
| AUD |
| NZD |
| JPY |
| CAD |
| SEK |
| DKK |
| NOK |
| MUR |
| HKD |
| SGD |
| ILS |
| AED |
| INR |
| CNY |
Wklej dane do kolumn B i E.
Zdefiniuj nazwy i użyj funkcji indeksu zgodnie z ilustracją:
Ponieważ nazwy zostały zdefiniowane w lokalnym arkuszu danych „Currencies”, arkusz „Main” musi jedynie odnosić się do zdefiniowanych nazw, aby uzyskać wartość, tj. =SPRZEDAJ i =KUP dla komórek „Główne” odpowiednio E10 i G10.
Będziemy programować Excela do czytania w sieci. Ma jednak własny, wbudowany proces na wstążce danych, którego wystąpienie można nagrać jako makro podczas tworzenia różnych scenariuszy. Pamiętaj, że konfiguracje komputera lub przeglądarki mogą niekorzystnie wpływać na skrypty stron internetowych.
Kod
Wstaw moduł i wprowadź następujące informacje:
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
Zapisz skoroszyt jako typ xlsm.
Przetestuj kod, zmieniając wartości pól kombi, a następnie ulepsz formaty wklejonej tabeli (cztery miejsca po przecinku, linie siatki, cieniowanie?).
Uszkodzenie plików Excel
Excel czasami uszkadza pliki podczas zapisywania, a następnie próbuje własnej procedury odzyskiwania, która często, z mojego doświadczenia, po prostu nie działa. Może to być katastrofalne dla użytkownika, ponieważ zniszczeniu ulega plik źródłowy (prawdopodobnie Twoja jedyna kopia). Uszkodzone pliki Excela można jednak naprawić za pomocą narzędzi innych firm, oszczędzając znaczną ilość czasu i wysiłku.
Wprowadzenie autora:
Felix Hooker jest ekspertem w dziedzinie odzyskiwania danych w DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym naprawa rar archiwum i oprogramowanie do odzyskiwania sql. po więcej informacji odwiedź www.datanumen.com
