Я пытаюсь извлечь некоторые данные здесь: http://www.hnb.hr/tecajn/f140215.datVBA извлекать и анализировать данные с веб-сайта, чтобы Слово
Это список обменный курс от Национального банка Хорватии. Имя файла «f140215.dat» в основном дату, отформатированные в следующем порядке:
«е» «DDMMYY» «.dat»
Я намерен иметь данные, организованные в виде таблицы Word, который содержит следующие клетки:
- Cell # 1, где пользователь будет вручную ввести дату в следующем формате: «МММ ДД, YYYY»
- Cell # 2, в котором пользователь будет вводить вручную запрашиваемый код валюты имя (USD, GBP и т. Д.)
- Ячейка № 3, где должен быть указан извлеченный обменный курс для указанной даты и валюты для .
Под таблицей находится кнопка «ОБНОВЛЕНИЕ», которая обновляет информацию о ячейке №3. Сценарий, который я прошу, должен быть подключен к этой кнопке.
После нажатия на кнопку, я хотел бы сценарий, чтобы сделать следующее:
- Выяснить, какие страницы для перехода на на основе даты, введенной в ячейке # 1. Например, если ячейка # 1 содержит «14 февраля 2015», сценарий должен указывать на «http://www.hnb.hr/tecajn/f140215.dat»
- На этой странице, возьмите среднее значение для валюты, указанной в Cell # 2. Например, если ячейка № 2 содержит «USD», сценарий должен быть
экстракт «6,766508», который является средним значением для «840USD001». Только среднее значение имеет значение. - Введите это значение в ячейку № 3.
Чтобы подвести итог, основанный на критериях, указанных в двух ячейках таблицы, сценарий должен определить, к какой странице перейти и какие данные извлечь из него, и с этими данными заполнить третью ячейку.
Надеюсь, я объяснил это достаточно хорошо. Это только часть всего генератора счетов, который я создаю. До сих пор я получил все на работу, но это я даже не знаю, как начать. Я могу отправить все это, если нужно, но подумал, что это не совсем актуально.
EDIT:
Я смотрел некоторые учебники и играл, и это то, что я получил до сих пор.
Enum READYSTATE
READYSTATE_UNINITIALIZED = 0
READYSTATE_LOADING = 1
READYSTATE_LOADED = 2
READYSTATE_INTERACTIVE = 3
READYSTATE_COMPLETE = 4
End Enum
Sub Test()
Dim ie As New InternetExplorer
ie.Visible = False
ie.navigate "http://www.hnb.hr/tecajn/f140215.dat"
Do While ie.READYSTATE <> READYSTATE_COMPLETE
DoEvents
Loop
Dim html As HTMLDocument
Set html = ie.document
MsgBox html.DocumentElement.innerText
End Sub
Я знаю, что это не так много, но, как я уже сказал, я новичок в этом. Я смог получить данные в окне сообщения, но я понятия не имею, как его разобрать, и без этого я не могу ничего сделать, упомянув выше. Что теперь?
EDIT 2:
Хорошо! Сделал некоторый прогресс!Мне удалось разобрать его, используя функцию split:
Sub Test()
Dim ie As New InternetExplorer
ie.Visible = False
ie.navigate "http://www.hnb.hr/tecajn/f140215.dat"
Do While ie.READYSTATE <> READYSTATE_COMPLETE
DoEvents
Loop
Dim html As HTMLDocument
Set html = ie.document
Dim getData As String
getData = html.DocumentElement.innerText
'replaced all the space fields with line breaks
Dim repData As String
repData = Replace(getData, " ", vbCrLf)
'used line breaks as separators
Dim splData As Variant
splData = Split(repData, vbCrLf)
MsgBox splData(1)
MsgBox splData(2)
MsgBox splData(3)
End Sub
Сейчас он отображает проанализированные данные в ящиках сообщений. Остальное должно быть легко!
Добавление комментария от параметров порядка:
Это является частью продолжающегося кода:
Dim cur As String
cur = ActiveDocument.SelectContentControlsByTitle("valCombo").Item(1).Range.Text
If cur = "USD" Then
ActiveDocument.Tables(1).Cell(7, 3).Range.Text = splData(40) & " HRK"
End If
If cur = "EUR" Then
ActiveDocument.Tables(1).Cell(7, 3).Range.Text = splData(20) & " HRK"
End If
Таким образом, она работает, но я хотел бы установить ActiveDocument.Tables(1).Cell(7, 3).Range.Text
в виде строки. Однако, как только я это сделаю, он ничего не делает. Почему это?
Разбираем даты в * fddmmyy.dat * формат затем использовать один из ароматов 'MSXML2.XMLHTTP' и разобрать' .responseText', чтобы получить то, что вам нужно. Когда вы продемонстрировали некоторые оригинальные усилия, вернитесь и отредактируйте указанную выше спецификацию программного обеспечения, чтобы включить свою собственную попытку программирования, указав любые полученные вами ошибки. – Jeeped
@ Почитал, спасибо за указатели, но я думаю, что я еще далек от того, где мне нужно их использовать. Я отредактировал сообщение выше, поэтому, пожалуйста, взгляните, когда у вас появится шанс. Благодаря! – blackwind
Думаю, я понял! См. EDIT 2 :-) – blackwind