Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/41: Рейтинг темы: голосов - 41, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 14.07.2007
Сообщений: 4

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

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

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



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



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



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



Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.07.2007, 07:49
Ответы с готовыми решениями:

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

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

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

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

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

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



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

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

в ячейку А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
Думаю, 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  [ТС]
Всем спасибо! Видимо сам я тут не справлюсь.
0
rank1
17.07.2007, 19:22
Вот таким макаром можно сформировать строку с запросом из ячеек.
Из объектной модели эксплорера можно вытащить все, либо распарсить HTML, либо по коллекциям элементов лазить.
Если поискать в google на 'CreateObject("InternetExplorer.Applicat ion")'
вылезет море подобных примеров. что дальше требуется я не совсем въехал поскольку непонятно, что за определенная строка в определенной странице итп.
Нужно быть поконкретнее и дать адреса или сампл с исходными данными выложить.
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  [ТС]
Вот таким макаром можно сформировать строку с запросом из ячеек.
Таким методом макрос вызовет 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
Вот примерчик получающий файл через 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
Попробуйте Данные -> Импорт внешних данных -> Создать веб запрос.
Далее вводите адрес, выбираете нужную таблицу. и ОК.
Поковыряйтесь в настройках и можете авто настройки установки.
0 / 0 / 0
Регистрация: 14.07.2007
Сообщений: 4
20.07.2007, 20:34  [ТС]
To Pilligrim: Пробовал я через импорт, но к сожалению ни к чему не пришел.



-----------



А вот Rank1 помог очень, функция SaveWebFile решает тут всё (по крайней мере с моими знаниями в данной области). Спасибо большое! Спас меня от ручной рутинной работы.
0
rank1
21.07.2007, 22:34
Всегда пожалуйста)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.07.2007, 22:34
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Закрытая тема Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru