С сайта http://data.sberbank.ru/oryol/ru/quotes/metal/
Необходимо вставить в ячейки B2 и B3 таблицы MS Excel данные о покупке и продаже золота соответственно. А также в ячейки C2 и C3 данные о покупке и продаже серебра соответственно.
Вывод значений формата 0,00 р.
PHP
Как котировки металлов Сбербанка вставить в ячейку таблицы Excel?
Набросал скрипт на VBA для этого сайта:
Sub GetData()
Const strSite As String = "http://data.sberbank.ru/oryol/ru/quotes/metal"
Const strSiteTableClass As String = "table3_eggs4"
Const strRange As String = "Sheet2!A1"
Const iTimeOut As Integer = 5
On Error GoTo errGetData
Dim objRng As Range
Dim objIE As Object
Dim objData As Object
Dim dtStart As Date
Set objRng = Range(strRange)
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False
dtStart = Now()
objIE.Navigate strSite
While objIE.Busy Or objIE.ReadyState <> 4
DoEvents
If DateDiff("s", Now(), dtStart) >= iTimeOut Then
Err.Raise vbObjectError, , "Timeout"
End If
Wend
Set objData = objIE.document.getElementsByClassName(strSiteTableClass)(0)
objRng.Value = CDbl(objData.Rows(1).Cells(2).innerHTML)
objRng.Offset(0, 1) = CDbl(objData.Rows(1).Cells(4).innerHTML)
objRng.Offset(1, 0).Value = CDbl(objData.Rows(2).Cells(2).innerHTML)
objRng.Offset(1, 1).Value = CDbl(objData.Rows(2).Cells(4).innerHTML)
objIE.Quit
Exit Sub
errGetData:
On Error Resume Next
Range(objRng, objRng.Offset(1, 1)).Value = "Нет данных"
objIE.Quit
End Sub
P.S: Проверено работает. Пока структуру сайта не поменяют ^_^. Помещает в область указанную в strRange (ИмяЛиста! ячейка) данные с этого сайта или "Нет данных", если не удалось их получить.
iTimeOut - время ожидания в секундах (Sleep нет в VBA пришлось так)
Формат ячеек без проблем зададите сами (правая кнопка на ячейках, формат)
Пишите в комментах или на почту если что.
Sub GetData()
Const strSite As String = "http://data.sberbank.ru/oryol/ru/quotes/metal"
Const strSiteTableClass As String = "table3_eggs4"
Const strRange As String = "Sheet2!A1"
Const iTimeOut As Integer = 5
On Error GoTo errGetData
Dim objRng As Range
Dim objIE As Object
Dim objData As Object
Dim dtStart As Date
Set objRng = Range(strRange)
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False
dtStart = Now()
objIE.Navigate strSite
While objIE.Busy Or objIE.ReadyState <> 4
DoEvents
If DateDiff("s", Now(), dtStart) >= iTimeOut Then
Err.Raise vbObjectError, , "Timeout"
End If
Wend
Set objData = objIE.document.getElementsByClassName(strSiteTableClass)(0)
objRng.Value = CDbl(objData.Rows(1).Cells(2).innerHTML)
objRng.Offset(0, 1) = CDbl(objData.Rows(1).Cells(4).innerHTML)
objRng.Offset(1, 0).Value = CDbl(objData.Rows(2).Cells(2).innerHTML)
objRng.Offset(1, 1).Value = CDbl(objData.Rows(2).Cells(4).innerHTML)
objIE.Quit
Exit Sub
errGetData:
On Error Resume Next
Range(objRng, objRng.Offset(1, 1)).Value = "Нет данных"
objIE.Quit
End Sub
P.S: Проверено работает. Пока структуру сайта не поменяют ^_^. Помещает в область указанную в strRange (ИмяЛиста! ячейка) данные с этого сайта или "Нет данных", если не удалось их получить.
iTimeOut - время ожидания в секундах (Sleep нет в VBA пришлось так)
Формат ячеек без проблем зададите сами (правая кнопка на ячейках, формат)
Пишите в комментах или на почту если что.
в идеале в 2007 офисе можно было бы сделать "данные - из интернета" и на сайте сбера ухватить таблицу и импортировать в эксель.. ОБновление таблицы происходит либо по запросу, либо при каждом открытии файла, но для этого страница сбера должна содержать . А там по ходу 'ы... Так что ответ остается в разделе мысли и подсказки
Похожие вопросы
- PHP и MySQL - что лучше - сделать в таблице меньше полей, но длиннее запрос или больше полей и короче запрос?
- Построение связей в таблицах БД
- Скрипт PHP вставить на страницу
- PHP&SQL как вставить переменную в запрос sql;
- Как вставить в "label" имя ПК которого запустил клиент на PHP. Пример: Hello! "Имя компьютера" на ПК запустившего челове
- Верстка письма. Выравнивание ячейки таблицы по центру
- при заполнении ячеек в Excel последние цифры превращаются в нули.
- Дублирование ячеек в Excel
- Как объединить ячейки в Excel при помощи формул?
- как суммировать текстовые ячейки в excel написаннные вертикально.. нужно чтоб они встали в ряд через запятую.. как??
P.S. комп не очень слабенький=) тайм-аут выставил = 7
Соотв. строку
Set objData = objIE.document.getElementsByClassName(strSiteTableClass)(0)
Надо заменить на
Set objData = objIE.Document.GetElementsByTagName("table")(1)