Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Возможно-ли заставить веб-запрос работать так / 16 сообщений из 16, страница 1 из 1
29.09.2006, 11:50
    #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
29.09.2006, 13:16
    #34021958
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
рабочий пример веб-запроса
...
Рейтинг: 0 / 0
29.09.2006, 13:18
    #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
29.09.2006, 13:33
    #34022046
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
...
Рейтинг: 0 / 0
29.09.2006, 13:37
    #34022067
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
получается, что в экселе, веб-запросы научены себя вести нормально только со страницами с окончание .aspx?
...
Рейтинг: 0 / 0
29.09.2006, 14:09
    #34022205
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
а другие страницы (не aspx) как обрабатываются?
...
Рейтинг: 0 / 0
29.09.2006, 21:26
    #34023555
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
orunbekа другие страницы (не aspx) как обрабатываются? нет, такого примера я не нашел. смысл моего поста, если по-простому, есть обычные страницы чтмл, который различаются только по порядковому номеру на перед .html каким макаром можно перебирать эти номера, чтобы управление осуществлялось с листа. То есть, сделал нужную ссылку в эксель, запросил инфу с сайта, получил, позырил, потом захотел с другой страницы (штатными средствами - выбор из списка) поменял ссылку (он будет меняться только на номер) и снова получил данные. Такую фичу сделал, но только получилось топорно и громоздко (с 12 листами - по числу месяцев) и макросом, который объединяет данные на одном 13-листе и длинный текст кода. в вба получилось :)) 12 кусков кода, таких как первый пост.
...
Рейтинг: 0 / 0
29.09.2006, 21:35
    #34023565
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
orunbekа другие страницы (не aspx) как обрабатываются? хотя с другой стороны вот например

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

но дело в том, шо надо как-то поменять место index-news --- .html там где прочерк желательно бы получить возможность вставлять цифру (порядковый номер)
...
Рейтинг: 0 / 0
09.11.2006, 11:06
    #34114901
Ivan33
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
KL - практический вопрос, никто не ответил:(
...
Рейтинг: 0 / 0
09.11.2006, 11:29
    #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
09.11.2006, 15:41
    #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
09.11.2006, 16:45
    #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
Период между сообщениями больше года.
12.07.2013, 15:24
    #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
12.07.2013, 16:09
    #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
12.07.2013, 17:06
    #38329729
kain111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
неудача, всеравно при защите книги макросом поменять конект не получается.
...
Рейтинг: 0 / 0
15.07.2013, 12:11
    #38331126
kain111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно-ли заставить веб-запрос работать так
все оказалось проще. я надобавлял объектов QueryTable.Item() которые и создавали конекты, и к которым кроме как программно я не понял как обращаться. в обсчем осторожнее с ресурсами надо. Удалил их. создал один программно, убрал фоновое обновление, и переопределяя его конект обновлял его для получения данных.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Возможно-ли заставить веб-запрос работать так / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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