powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
22 сообщений из 22, страница 1 из 1
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37452611
Excel-Starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице часть рассчетов привязана к актуальному курсу 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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37452617
EducatedFool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Excel-Starter, воспользоваться поиском вам религия не позволяет?
http://excelvba.ru/code/CurrencyRate
...
Рейтинг: 0 / 0
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37452706
Excel-Starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, а как быть, е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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37452763
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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37452798
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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37452952
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот есть готовый кодик на этот случай - переделайте под себя:

Код: 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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37452971
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя не посмотрел - у EducatedFool ведь тоже ссылка на пример работы с xml.
...
Рейтинг: 0 / 0
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37453019
Excel-Starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнем,

автор"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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37453032
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Excel-Starter, в том примере ссылка была только для примера :)
Тот код брал адреса с листа, судя по коду - 6 штук.
Вам нужно убрать цикл, задать sURI, подправить
Cells(i, 2) = Replace(Mid(htmlcode, InStr(1, htmlcode, "US dollar") + 35, 7), ",", ".")
...
Рейтинг: 0 / 0
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37453056
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получится
Код: 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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37453758
Excel-Starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,

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

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

Спасибо!

Как сделать, чтоб при открытии файла/книги сразу проверял курс/писал в заданную ячейку значение?
...
Рейтинг: 0 / 0
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37453939
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Excel-Starter, в редакторе ВБА в модуле книги выбираете событие открытия книги (в окне, где пишете код, вверху есть выпадающие списки), в этот код пишете содержимое Sub Code1() или ставите ссылку на этот код (т.е. просто одно слово Code1), но тогда Sub Code1() должен быть в модуле (ну или желательно, если к словам придираться...)
Но тогда в коде точно укажаите, на какого листа Cells(1, 1) хотите данные вставлять - т.к. при открытии книги активный лист может быть какой угодно, какой оставили.
...
Рейтинг: 0 / 0
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37453953
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя в таком случае лучше код как 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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #37453991
Excel-Starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,

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

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

Красота! Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #39699674
Excel-Starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #39699740
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Excel-Starterсам адрес в браузерах - открываетсяДа, потому что действует перенаправление на https. У Вас этого нет. Запишите в ссылке вместо http - https и все заработает.
...
Рейтинг: 0 / 0
Excel 2010: Сможет ли Excel брать значение для ячейки(курс валюты) с интернет-сайта банкa?
    #39699792
Excel-Starter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,

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


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