powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Возможно-ли заставить веб-запрос работать так
16 сообщений из 16, страница 1 из 1
Возможно-ли заставить веб-запрос работать так
    #34021498
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Sub Macros1()
   
    Sheets("Лист1").Select
    With ActiveSheet.Activate.QueryTables.Add(Connection:= _
        "URL;http://www.***.ru/company/" & Range(C2) & ".html", Destination:=Range( _
        "A2"))
        .Name = Range(C2)
        .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
    
    End Sub
Смысл в том, что есть запрос (штатные средства эксель) и куча интернет-ссылок, которые похожи друг на друга, но отличается только конец ссылки: month1.html, month2.html ... как автомитизировать ввод адреса в поле в самом вебзапросе, чтобы при смене конца гиперссылки запрос мог получать данные уже по новой (измененной ссылке)? Причем значение (month1) бралось бы из ячейки на листе? Приведенный выше код - грубая попытка.
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34021958
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рабочий пример веб-запроса
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34021965
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Public Sub GetHistoricalStockPrices(ByVal StockSymbol As String)
ThisWorkbook.Sheets("Profit and Loss").QueryTables("Stock Prices").Connection = "URL;http://moneycentral.msn.com/investor/invsub/results/statemnt.aspx?Symbol=" & StockSymbol & "&lstStatement=Income&stmtView=Ann"
ThisWorkbook.Sheets("Profit and Loss").QueryTables("Stock Prices").Refresh
- вариант для модификации примера.
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34022046
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34022067
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается, что в экселе, веб-запросы научены себя вести нормально только со страницами с окончание .aspx?
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34022205
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а другие страницы (не aspx) как обрабатываются?
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34023555
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekа другие страницы (не aspx) как обрабатываются? нет, такого примера я не нашел. смысл моего поста, если по-простому, есть обычные страницы чтмл, который различаются только по порядковому номеру на перед .html каким макаром можно перебирать эти номера, чтобы управление осуществлялось с листа. То есть, сделал нужную ссылку в эксель, запросил инфу с сайта, получил, позырил, потом захотел с другой страницы (штатными средствами - выбор из списка) поменял ссылку (он будет меняться только на номер) и снова получил данные. Такую фичу сделал, но только получилось топорно и громоздко (с 12 листами - по числу месяцев) и макросом, который объединяет данные на одном 13-листе и длинный текст кода. в вба получилось :)) 12 кусков кода, таких как первый пост.
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34023565
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekа другие страницы (не aspx) как обрабатываются? хотя с другой стороны вот например

http://www.kommersant.ru/index-news.html?ext=news&id=107201&newsrubric=0&page=1

но дело в том, шо надо как-то поменять место index-news --- .html там где прочерк желательно бы получить возможность вставлять цифру (порядковый номер)
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34114901
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL - практический вопрос, никто не ответил:(
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34115032
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты же сам писал, что пробовал через
Код: plaintext
ThisWorkbook.Sheets("Profit and Loss").QueryTables("Stock Prices").Connection = "URL;http://moneycentral.msn.com/investor/invsub/results/statemnt.aspx?Symbol=" & StockSymbol & "&lstStatement=Income&stmtView=Ann"
и чем не подходит?
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34116633
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но эта конструкция пашет для страниц aspx, xml, xhtml и пр. Меня интересует вопрос другого плана. Каким макаром сделать так, чтобы значение (ссылка) для веб-запроса, которую обычно пользователь вводит в строчку(см. форму создания веб-запроса) вручную бралось из ячейки. Например, если там уже есть ссылка на интернет-ресурс? И второй вопрос.

Так как в моем случае имею дело с html и по приведенным примерам в случае например asp, xml страницы не выцепить нужную инфу.

Если есть ссылка http://www.lok.ru/ghost1.html В обычном режиме пользователь берет эту ссылку и вводит ее в строку веб-запроса. В случае если он имеет еще одну ссылку http://www.lok.ru/ghost2.html , то ему снова придется вводить врукопашную эту ссылку.
Так вот возможно ли осуществлять сборку этой ссылки
(по частям, которые могут изменяться) в какой-нибудь ячейке, а потом с помощью вба передавать в строку веб-запроса. Сама же ссылка в ячейке будет выглядеть так http://www.lok.ru/ghost{изменяемая часть}.html
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #34116930
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan33но эта конструкция пашет для страниц aspx, xml, xhtml и пр. Меня интересует вопрос другого плана. Каким макаром сделать так, чтобы значение (ссылка) для веб-запроса, которую обычно пользователь вводит в строчку(см. форму создания веб-запроса) вручную бралось из ячейки. Например, если там уже есть ссылка на интернет-ресурс?

если запрос будешь запускать кнопкой, сделай в обработчике кнепки, например, такой код (в "A1" будет сидеть адрес "http://......"):
Код: plaintext
1.
2.
3.
4.
Dim ConnStr As String

    ConnStr = "URL;" & Range("A1").Value
    ActiveSheet.QueryTables.Connection = ConnStr
    ActiveSheet.QueryTables.Refresh

Другой вариант - обработка события beforeRefresh, но это нужно создавать классы, а преимущетсва, в данном случае, нет.

.. эта строчка тебе не нужна:
Код: plaintext
1.
ThisWorkbook.Sheets("Web Query").QueryTables("Stock Prices").Parameters("Stock Symbol").SetParam xlConstant, StockSymbol

Ivan33 И второй вопрос.Так как в моем случае имею дело с html и по приведенным примерам в случае например asp, xml страницы не выцепить нужную инфу. ???

Ivan33Если есть ссылка http://www.lok.ru/ghost1.html В обычном режиме пользователь берет эту ссылку и вводит ее в строку веб-запроса. В случае если он имеет еще одну ссылку http://www.lok.ru/ghost2.html , то ему снова придется вводить врукопашную эту ссылку.
Так вот возможно ли осуществлять сборку этой ссылки
(по частям, которые могут изменяться) в какой-нибудь ячейке, а потом с помощью вба передавать в строку веб-запроса. Сама же ссылка в ячейке будет выглядеть так http://www.lok.ru/ghost{изменяемая часть}.html

в "A1" как хочешь составляй строку: через формулы или руками.

PS мне кажется, что ты сам в тексте привел ответы на свои вопросы, все вроде просто, пожет я не понял, в чем проблема?...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Возможно-ли заставить веб-запрос работать так
    #38329552
kain111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
схожая проблема, может кто поможет.
в цикле
Код: vbnet
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.
Set shFirstQtr = ThisWorkbook.Worksheets("web")
For Count = 7 To last_row

MyGet = "sreg=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 1) & "&debitor=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 2) & "&kunnr=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 3) & "&brand=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 4) & "&prodh=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 5) & "&name=WEB" & Environ("USERNAME")
Set qtQtrResults = shFirstQtr.QueryTables.Add(Connection:= _
"URL;http://app10/mssql_prc_market.php" & "?" & MyGet, Destination:=ThisWorkbook.Worksheets("web").Range("A" & Count))
With qtQtrResults
        .Name = "mssql_prc_market"
        .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
        .MaintainConnection = False
End With
Worksheets("web").Cells.Clear
Worksheets("web").QueryTables.Item(1).Delete
Next Count



динамически генерирую строку запроса и создаю QueryTables. Потом после копирования данных удаляю ее. Проблема в том что после отработки появляется один лишний конект, а поскольку инструмент планируется использовать для расчета определенный деятельности то наверное это не очень хорошо. нашел решение в виде
Код: vbnet
1.
2.
3.
Application.DisplayAlerts = False
ActiveWorkbook.Connections(ActiveWorkbook.Connections.Count).Delete
Application.DisplayAlerts = True


но тогда я не могу защитить книгу чтобы пользователи туда не лазели
смотрел вариант .MaintainConnection = False но он только для подключений к базам данных
Синтаксис в котором бы переопределять конект можно было не нашел. может подскажет кто?
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #38329627
kain111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разобрался, все намного проще, создается один web запрос , можно ручками, и важно там убрать галочку фоновое обновление. ну а дальше просто переопределяем кго строку подключения и обновляем
Код: vbnet
1.
2.
3.
MyGet = "sreg=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 1) & "&debitor=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 2) & "&kunnr=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 3) & "&brand=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 4) & "&prodh=" & ThisWorkbook.Worksheets("PL per KG").Cells(Count, 5) & "&name=WEB" & Environ("USERNAME")
Worksheets("web").QueryTables(1).Connection = "URL;http://app10/mssql_prc_market.php" & "?" & MyGet
Worksheets("web").QueryTables(1).Refresh


сори за сбитые поля.
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #38329729
kain111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неудача, всеравно при защите книги макросом поменять конект не получается.
...
Рейтинг: 0 / 0
Возможно-ли заставить веб-запрос работать так
    #38331126
kain111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все оказалось проще. я надобавлял объектов QueryTable.Item() которые и создавали конекты, и к которым кроме как программно я не понял как обращаться. в обсчем осторожнее с ресурсами надо. Удалил их. создал один программно, убрал фоновое обновление, и переопределяя его конект обновлял его для получения данных.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Возможно-ли заставить веб-запрос работать так
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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