Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa? / 22 сообщений из 22, страница 1 из 1
23.09.2011, 04:31
    #37452611
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
В таблице часть рассчетов привязана к актуальному курсу EUR к доллару Европейского Центрального банка.
Для этого в таблице в листе "Данные" в соотв. ячеку, пока вручную, каждый день вносятся значения актуального курса валюты с сайта http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html . Есть ли возможность в Excele-e прописать формулой брать значение для ячейки из соотв. раздела на странице банка при каждом запуске таблицы:
USD

US dollar

1.3448.

К слову, на странице присутствует инструкция для разработчиков "For developers", но скорее сайтов, чем таблиц...



How to parse the data

Regular expression example

<?php
//This is a PHP(4/5) script example on how eurofxref-daily.xml can be parsed
//Read eurofxref-daily.xml file in memory
//For this command you will need the config option allow_url_fopen=On (default)
$XMLContent=file(" http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
//the file is updated daily between 2.15 p.m. and 3.00 p.m. CET

foreach($XMLContent as $line){
if(preg_match("/currency='([[:alpha:]]+)'/",$line,$currencyCode)){
if(preg_match("/rate='([[:graph:]]+)'/",$line,$rate)){
//Output the value of 1EUR for a currency code
echo'1€='.$rate[1].' '.$currencyCode[1].'<br/>';
//--------------------------------------------------
//Here you can add your code for inserting
//$rate[1] and $currencyCode[1] into your database
//--------------------------------------------------
}
}
}
?>
XML parser example

<?php
function StartElement($parser, $name, $attrs) {
if (!empty($attrs['RATE'])) {
echo "1€=".$attrs['RATE']." ".$attrs['CURRENCY']."<br />";
}
}
$xml_parser= xml_parser_create();
xml_set_element_handler($xml_parser, "StartElement", "");
// for the following command you will need file_get_contents (PHP >= 4.3.0)
// and the config option allow_url_fopen=On (default)
xml_parse($xml_parser, file_get_contents (" http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"));
xml_parser_free($xml_parser);
?>
SimpleXML example

<?php
//This is aPHP(5)script example on how eurofxref-daily.xml can be parsed
//Read eurofxref-daily.xml file in memory
//For the next command you will need the config option allow_url_fopen=On (default)
$XML=simplexml_load_file(" http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
//the file is updated daily between 2.15 p.m. and 3.00 p.m. CET

foreach($XML->Cube->Cube->Cube as $rate){
//Output the value of 1EUR for a currency code
echo '1€='.$rate["rate"].' '.$rate["currency"].'<br/>';
//--------------------------------------------------
//Here you can add your code for inserting
//$rate["rate"] and $rate["currency"] into your database
//--------------------------------------------------
}
?>

1€=1.3448 USD
1€=102.59 JPY
1€=1.9558 BGN
1€=24.878 CZK
1€=7.4458 DKK
1€=0.87325 GBP
1€=293.06 HUF
1€=3.4528 LTL
1€=0.7093 LVL
1€=4.4863 PLN
1€=4.3055 RON
1€=9.2762 SEK
1€=1.2275 CHF
1€=7.8270 NOK
1€=7.4845 HRK
1€=43.2059 RUB
1€=2.4636 TRY
1€=1.3691 AUD
1€=2.4887 BRL
1€=1.3894 CAD
1€=8.6040 CNY
1€=10.4904 HKD
1€=12246.50 IDR
1€=4.9945 ILS
1€=66.6720 INR
1€=1605.66 KRW
1€=18.6738 MXN
1€=4.2744 MYR
1€=1.7185 NZD
1€=58.919 PHP
1€=1.7547 SGD
1€=41.379 THB
1€=11.0754 ZAR


Заранее спасибо!
...
Рейтинг: 0 / 0
23.09.2011, 05:36
    #37452617
EducatedFool
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Excel-Starter, воспользоваться поиском вам религия не позволяет?
http://excelvba.ru/code/CurrencyRate
...
Рейтинг: 0 / 0
23.09.2011, 09:37
    #37452706
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Ок, а как быть, еcли импортировать данные нужно не с сайта ЦБР, а из XML-файла:

http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml :

<?xml version="1.0" encoding="UTF-8"?>
-<gesmes:Envelope xmlns=" http://www.ecb.int/vocabulary/2002-08-01/eurofxref" xmlns:gesmes=" http://www.gesmes.org/xml/2002-08-01"> <gesmes:subject>Reference rates</gesmes:subject> -<gesmes:Sender> <gesmes:name>European Central Bank</gesmes:name> </gesmes:Sender> -<Cube> -<Cube time="2011-09-22"> <Cube rate="1.3448" currency="USD"/> <Cube rate="102.59" currency="JPY"/> <Cube rate="1.9558" currency="BGN"/> <Cube rate="24.878" currency="CZK"/> <Cube rate="7.4458" currency="DKK"/> <Cube rate="0.87325" currency="GBP"/> <Cube rate="293.06" currency="HUF"/> <Cube rate="3.4528" currency="LTL"/> <Cube rate="0.7093" currency="LVL"/> <Cube rate="4.4863" currency="PLN"/> <Cube rate="4.3055" currency="RON"/> <Cube rate="9.2762" currency="SEK"/> <Cube rate="1.2275" currency="CHF"/> <Cube rate="7.8270" currency="NOK"/> <Cube rate="7.4845" currency="HRK"/> <Cube rate="43.2059" currency="RUB"/> <Cube rate="2.4636" currency="TRY"/> <Cube rate="1.3691" currency="AUD"/> <Cube rate="2.4887" currency="BRL"/> <Cube rate="1.3894" currency="CAD"/> <Cube rate="8.6040" currency="CNY"/> <Cube rate="10.4904" currency="HKD"/> <Cube rate="12246.50" currency="IDR"/> <Cube rate="4.9945" currency="ILS"/> <Cube rate="66.6720" currency="INR"/> <Cube rate="1605.66" currency="KRW"/> <Cube rate="18.6738" currency="MXN"/> <Cube rate="4.2744" currency="MYR"/> <Cube rate="1.7185" currency="NZD"/> <Cube rate="58.919" currency="PHP"/> <Cube rate="1.7547" currency="SGD"/> <Cube rate="41.379" currency="THB"/> <Cube rate="11.0754" currency="ZAR"/> </Cube> </Cube> </gesmes:Envelope>


?
...
Рейтинг: 0 / 0
23.09.2011, 10:09
    #37452763
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Excel-Starter,
макрорекодером брезгуете ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 23.09.2011 (***)
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "FINDER;C:\temp\xl_\eurofxref-daily.xml", Destination:=Range("A1"))
        .Name = "eurofxref-daily"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod =  0 
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    ActiveWorkbook.XmlImport URL:="C:\temp\xl_\eurofxref-daily.xml", ImportMap _
        :=Nothing, Overwrite:=True, Destination:=Range("$A$1")
End Sub
...
Рейтинг: 0 / 0
23.09.2011, 10:22
    #37452798
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Excel-Starter,
сорри, QueryTable там лишнее.
Код: plaintext
1.
2.
3.
    ActiveWorkbook.XmlImport _
    URL:="http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml", _
    ImportMap:=Nothing, Overwrite:=True, Destination:=ActiveSheet.[A1]
...
Рейтинг: 0 / 0
23.09.2011, 11:38
    #37452952
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Вот есть готовый кодик на этот случай - переделайте под себя:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Code1()
    Dim sURI As String, i&
    For i =  1  To  6 
    sURI = Cells(i,  1 ).Text '"http://cbr.ru/currency_base/daily.aspx?C_month=06&C_year=2011&date_req=02%2F06%2F2011"
    With CreateObject("MSXML2.XMLHTTP"): .Open "GET", sURI, False: .Send: htmlcode = .responseText: End With
    Cells(i,  2 ) = Replace(Mid(htmlcode, InStr( 1 , htmlcode, "Доллар США") +  35 ,  7 ), ",", ".")
    Next
End Sub
...
Рейтинг: 0 / 0
23.09.2011, 11:45
    #37452971
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Хотя не посмотрел - у EducatedFool ведь тоже ссылка на пример работы с xml.
...
Рейтинг: 0 / 0
23.09.2011, 11:59
    #37453019
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
пробуй камнем,

автор"FINDER;C:\temp\xl_\eurofxref-daily.xml",

Ссылка на сохраненный файл - обязательна? Или можно, чтоб Excel обращался за значением на прямую в XML-файл по адресу http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml и забирал цифровое значение из строки:
<Cube rate="1.3448" currency="USD"/> ,
переводя его в формат "1,3448"


Hugo121


Переделал, как мог (в исходном примере нужна таблица, а не XML, поэтому ссылка http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html), не сработало :(

Private Sub Code1()
Dim sURI As String, i&
For i = 1 To 6
sURI = Cells(i, 1).Text '" http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html"
With CreateObject("MSXML2.XMLHTTP"): .Open "GET", sURI, False: .Send: htmlcode = .responseText: End With
Cells(i, 2) = Replace(Mid(htmlcode, InStr(1, htmlcode, "US dollar") + 35, 7), ",", ".")
Next
End Sub
...
Рейтинг: 0 / 0
23.09.2011, 12:02
    #37453032
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Excel-Starter, в том примере ссылка была только для примера :)
Тот код брал адреса с листа, судя по коду - 6 штук.
Вам нужно убрать цикл, задать sURI, подправить
Cells(i, 2) = Replace(Mid(htmlcode, InStr(1, htmlcode, "US dollar") + 35, 7), ",", ".")
...
Рейтинг: 0 / 0
23.09.2011, 12:12
    #37453056
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Получится
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Code1()
Dim sURI As String, htmlcode$

sURI = "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
With CreateObject("MSXML2.XMLHTTP"): .Open "GET", sURI, False: .Send: htmlcode = .responseText: End With
Cells( 1 ,  1 ) = Mid(htmlcode, InStr( 1 , htmlcode, "USD") +  11 ,  6 )

End Sub
Только нужно проследить - всегда ли там 6 знаков в курсе.
Но надёжнее с Node работать - там не ошибёшся. Но кода больше. А этот даже можно на пару переменных сократить.
...
Рейтинг: 0 / 0
23.09.2011, 15:57
    #37453758
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Hugo121,

Создал модуль в "Visual Basic", внес данный код в него. Как теперь запустить его (в макросах - не показывается), чтоб в заданной ячейке вписывалось числовое значение, вытащенное с сайта?
...
Рейтинг: 0 / 0
23.09.2011, 16:03
    #37453775
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Excel-Starter, чтоб показывался - уберите Private/
А так запускать можно сделанной кнопкой, или по событию листа/книги, или таймером, или...
Из редактора по F8 отработал правильно?
...
Рейтинг: 0 / 0
23.09.2011, 16:46
    #37453909
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Hugo121,

Да, по F8 - сработал!

Спасибо!

Как сделать, чтоб при открытии файла/книги сразу проверял курс/писал в заданную ячейку значение?
...
Рейтинг: 0 / 0
23.09.2011, 16:55
    #37453939
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Excel-Starter, в редакторе ВБА в модуле книги выбираете событие открытия книги (в окне, где пишете код, вверху есть выпадающие списки), в этот код пишете содержимое Sub Code1() или ставите ссылку на этот код (т.е. просто одно слово Code1), но тогда Sub Code1() должен быть в модуле (ну или желательно, если к словам придираться...)
Но тогда в коде точно укажаите, на какого листа Cells(1, 1) хотите данные вставлять - т.к. при открытии книги активный лист может быть какой угодно, какой оставили.
...
Рейтинг: 0 / 0
23.09.2011, 17:02
    #37453953
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Хотя в таком случае лучше код как UDF использовать:
в модуль
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function USD_ecb()
Application.Volatile True
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml", False
.Send
USD_ecb = Mid(.responseText, InStr( 1 , .responseText, "USD") +  11 ,  6 )
End With

End Function


на листе в ячейку =USD_ecb()
Будет правда пересчитываться при каждом чихе...
...
Рейтинг: 0 / 0
23.09.2011, 17:13
    #37453991
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Hugo121,

Коротко, четко и работает! СПАСИБО!
...
Рейтинг: 0 / 0
23.09.2011, 17:21
    #37454023
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Hugo121,

Одна беда: формат не тот - функция возвращает цифру с точкой, а нужна запятая. Oстальные завязанные на курс формулы принимают точку за разделение тысяч, а не за разделитель целого от десятых
...
Рейтинг: 0 / 0
23.09.2011, 17:33
    #37454063
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Excel-Starter, замените в коде точку на что Вам нужно.
USD_ecb=replace(USD_ecb,".",",")
Ну и может быть ещё тип числовой задать.
...
Рейтинг: 0 / 0
23.09.2011, 18:29
    #37454162
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Hugo121,

Красота! Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
07.09.2018, 14:49
    #39699674
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Hugo121,
Что-то изменилось и почему-то Excel перстал получать данные с адреса http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml (сам адрес в браузерах - открывается). Как-то надо изменить скрипт?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function USD_ecb()
Application.Volatile True
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml", False
.Send
USD_ecb = Mid(.responseText, InStr(1, .responseText, "USD") + 11, 6)
End With

End Function

Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
07.09.2018, 15:56
    #39699740
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
Excel-Starterсам адрес в браузерах - открываетсяДа, потому что действует перенаправление на https. У Вас этого нет. Запишите в ссылке вместо http - https и все заработает.
...
Рейтинг: 0 / 0
07.09.2018, 17:15
    #39699792
Excel-Starter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
The_Prist,

Спасибо! Сработало.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa? / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]