0 / 0 / 0
Регистрация: 14.07.2007
Сообщений: 4
1

Получение данных с веб-страницы с закраской ячеек в определенный цвет в зависимости от ID данных

14.07.2007, 07:49. Показов 7593. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с написанием макроса, т.к. в VB особенно не разбираюсь.



Макрос должен по нажатию на кнопку брать значения из выделенных яечеек в Excel, добавлять их (по очереди) к заданной в коде URL строке, к примеру www.ttt.by/nnnnnn&34=" ..... " , искать в полученной странице определенную строку (заданную в коде) и запоминать значение определенного параметра из найденной строки. Далее в зависимости от значения (всего их 3-5 к примеру) закрашивать ячейку в определенный цвет. Цвет будет задаваться в зависимости от значения.



Неплохо было бы встроить ещё эту кнопку в панель.



Вот вроде и все.... Если кому не лень напишите плз более ли менее понятный для новичка манюал.



Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2007, 07:49
Ответы с готовыми решениями:

PyQt5. Заполнение веб-форм, получение данных со страницы
Добрый день. Нужно получить некоторые данные с веб-страницы и программно заполнить веб-форму....

Получение данных с веб-страницы, которые "отсутствуют" (?) в ее исходном коде
Некоторое время назад создавал тему https://www.cyberforum.ru/cpp-builder/thread943115.html. Суть...

Не могу сделать формулу суммирования данных ячеек за определенный месяц
Привет, друзья! Я новичок, и возникла необходимость сделать простейшую таблицу подсчета прибыли...

Отправка (получение) данных на (из) определенный (ого) IP адрес
Привет всем. Возникла необходимость через интернет работать с устройством: отправлять в него данные...

9
22 / 5 / 1
Регистрация: 05.09.2010
Сообщений: 370
16.07.2007, 13:53 2
?

готовый вариант, думаю, никто не предложит.

разложите задачу на составляющие и решайте по этапам.



Мои пять копеек:

Открыть страничку можно сл.образом:

в ячейку А1 внести "drugoi" (без кавычек)

в макрос:

Visual Basic
1
2
3
sURL = "Explorer http://" & Cells(1, 1) & ".livejournal.com/"
 
Shell sURL, vbNormalFocus
0
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
16.07.2007, 21:01 3
Думаю, 5 копеек, которые предложил Masalov Вам не пригодятся. Очевидно, что средствами VBA, Нормально, эта задача не решается. Основная трудность состоит в получении доступа к удаленному контенту страницы. Для решения этой проблемы настоятельно рекомендую изучить win api

Для начала:

http://www.codenet.ru/progr/vbasic/FTP.php

затем:

http://msdn2.microsoft.com/en-... 18375.aspx



Это практически готовое решение.



С уважением,
0
0 / 0 / 0
Регистрация: 14.07.2007
Сообщений: 4
17.07.2007, 03:21  [ТС] 4
Всем спасибо! Видимо сам я тут не справлюсь.
0
rank1
17.07.2007, 19:22 5
Вот таким макаром можно сформировать строку с запросом из ячеек.
Из объектной модели эксплорера можно вытащить все, либо распарсить HTML, либо по коллекциям элементов лазить.
Если поискать в google на 'CreateObject("InternetExplorer.Application")'
вылезет море подобных примеров. что дальше требуется я не совсем въехал поскольку непонятно, что за определенная строка в определенной странице итп.
Нужно быть поконкретнее и дать адреса или сампл с исходными данными выложить.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub doCells()
    Dim urlStr As String
    urlStr = "http://www.ttt.by www.ttt.by"
    Dim c As Range
    For Each c In Selection.Cells
     urlStr = urlStr & "nn = " & c.Value
    Next c
    Dim objie As Object
    Set objie = CreateObject("InternetExplorer.Application")
    
    With objie
        .Visible = True
        .Navigate urlStr
        Do While .Busy: DoEvents: Loop
        Do While .ReadyState <> 4:  Loop
    End With
    
End Sub
0 / 0 / 0
Регистрация: 14.07.2007
Сообщений: 4
19.07.2007, 10:52  [ТС] 6
Вот таким макаром можно сформировать строку с запросом из ячеек.
Таким методом макрос вызовет IE и откроет URL в нём. А мне нужно, чтобы процесс произходил в "backgroung".

Про строку, конкретно не могу сказать т.к. она будет меняться. В ообщем проблема у меня в том, как в URL странице найти мне нужные данные и запомнить их, записать в файл, хоть как.

Данные будут выглядеть, к примеру, так:
Visual Basic
1
2
3
4
5
6
var id_note="";
var idLabel="";
var id="";
 
idLabel = "Status:";
id = "Information Received";
Вот мне и надо, что бы в зависимости от значения "ID" ячейка закрашивалась в заданный цвет.

Information Received -> Желтый
Transferred -> Зеленый
Missed -> Красный
0
rank1
19.07.2007, 14:04 7
Вот примерчик получающий файл через XMLHTTP. Источник - vbaexpress.com

Visual Basic
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
Option Explicit 
Function SaveWebFile(ByVal vWebFile As String, ByVal vLocalFile As String) As Boolean 
    Dim oXMLHTTP As Object, i As Long, vFF As Long, oResp() As Byte 
     'You can also set a ref. to Microsoft XML, and Dim oXMLHTTP as MSXML2.XMLHTTP
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") 
    oXMLHTTP.Open "GET", vWebFile, False 'Open socket to get the website
    oXMLHTTP.Send 'send request
     'Wait for request to finish
    Do While oXMLHTTP.readyState <> 4 
        DoEvents 
    Loop 
    oResp = oXMLHTTP.responseBody 'Returns the results as a byte array
     'Create local file and save results to it
    vFF = FreeFile 
    If Dir(vLocalFile) <> "" Then Kill vLocalFile 
    Open vLocalFile For Binary As #vFF 
    Put #vFF, , oResp 
    Close #vFF 
     'Clear memory
    Set oXMLHTTP = Nothing 
End Function 
 
Sub TestingTheCode() 
     'This will save the Google logo to your hard drive, insert it into the
     ' active spreadsheet, then delete the local file
    SaveWebFile "http://www.google.com/intl/en/images/logo.gif", "C:\GoogleLogo.gif" 
    ActiveSheet.Pictures.Insert "C:\GoogleLogo.gif" 
    Kill "C:\GoogleLogo.gif" 
End Sub
А в чем проблема-то с бэкграундом? Установить свойство visible у Эксплорера и тогда он не будет видимым. А поиск выполнить распарсив HTMl с помощью Microsoft regular Expression component. У Эксплорера есть свойство document (а у него InnerHTML) по объектной модели документа лазить перебирая коллекции тегов. Если у тега имя есть - можно его найти методом GetElementByID.
Можно на форму плюхнуть Explorer component и через него делать.
Можно скачать веб страницу и искать в ней используя регулярные выражения. Если в одной странице много всяких значений, то приджется искать их и засовывать в хеш scripting.dictionary, а потом как-то выполнять сопоставление и в нужный цвет ячейки красить. Вот пример поиска c помощью RegExp:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub useRegExp()
    Dim s
    s = "var id_note="""";" & vbCrLf & _
        "var idLabel="""";" & vbCrLf & _
        "var id="""";" & vbCrLf & _
        "" & vbCrLf & _
        "idLabel = ""Status:"";" & vbCrLf & _
        "id = ""Information Received"";"
    MsgBox s
    
    Dim re As New RegExp
    re.MultiLine = True
    re.IgnoreCase = True
    re.Pattern = "id.*=.*x22(Information Received)x22;"
    Dim mm As MatchCollection
    Dim mt As Match
    Set mm = re.Execute(s)
    If mm.Count > 0 Then
     Set mt = mm(0)
     MsgBox mt.SubMatches(0)
    End If
End Sub
Pilligrim
19.07.2007, 14:53 8
Попробуйте Данные -> Импорт внешних данных -> Создать веб запрос.
Далее вводите адрес, выбираете нужную таблицу. и ОК.
Поковыряйтесь в настройках и можете авто настройки установки.
0 / 0 / 0
Регистрация: 14.07.2007
Сообщений: 4
20.07.2007, 20:34  [ТС] 9
To Pilligrim: Пробовал я через импорт, но к сожалению ни к чему не пришел.



-----------



А вот Rank1 помог очень, функция SaveWebFile решает тут всё (по крайней мере с моими знаниями в данной области). Спасибо большое! Спас меня от ручной рутинной работы.
0
rank1
21.07.2007, 22:34 10
Всегда пожалуйста)
21.07.2007, 22:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2007, 22:34
Помогаю со студенческими работами здесь

Получение данных из ячеек DataGridview
В общем у меня в Datagridview заргужается база, имеет 6 столбцов 52 строки. Первые 2 столбца...

Получение данных в access2007 в зависимости от поля.
Делаю небольшую базу и вот застопорился на моменте, когда надо получить данные из таблицы. Более...

Цвет подписи данных в зависимости от цвета текста в ячейке
Уважаемые участники форума без вас никуда)) Мне снова нужна Ваша помощь. Как сделать чтобы цвет...

Получение данных с веб-сервера
Как отпраить запрос к php странице в интернете, получить json файл и после распарсить полученный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru