Вопрос по Access

Программирование на Visual Basic for Applications
IgorOk
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 29.01.2003 (Ср) 12:21

Вопрос по Access

Сообщение IgorOk » 07.10.2003 (Вт) 9:07

Можно ли из Access-а сделать запрос на web-site (аналог Web-quiry из Excel-я)?

IgorOk
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 29.01.2003 (Ср) 12:21

Сообщение IgorOk » 09.10.2003 (Чт) 15:02

Ну что, никто не знает чтоли? Очень надо!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 09.10.2003 (Чт) 15:07

Емое.

Да, можно. Вот тебе ответ.

IgorOk
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 29.01.2003 (Ср) 12:21

Сообщение IgorOk » 09.10.2003 (Чт) 17:00

Может это глупой вопрос - но КАК?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 09.10.2003 (Чт) 17:41

1. Выбираешь tables\Link table

2. Выбираешь тип - htm document

3. в поле имя файла вбиваешь http://server/file.htm



И все.

IgorOk
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 29.01.2003 (Ср) 12:21

Сообщение IgorOk » 17.10.2003 (Пт) 9:40

Это конечно всё хорошо, но только эта функция работает только при указании html страницы на локальном диске. Если же указать станицу в Internet, то ничего не выходит. Ты сам то пробовал эту функцию? Вот например страница http://www.cbr.ru/currency_base/D_print ... 17/10/2003 - попробуй стелать так, как ты написал.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.10.2003 (Пт) 9:50

Гы-гы-гы...
Опять оно :)
Вернее, она :shock:

Могу предложить...
Создать объект экселя из кода аксеса (dim eapp as new excel.application), создавать в нём обычный web-запрос и тырить результаты.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

IgorOk
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 29.01.2003 (Ср) 12:21

Нужна помощь

Сообщение IgorOk » 30.10.2003 (Чт) 10:59

делаю в процедуре:
Dim objXL As Excel.Application
Set objXL = GetObject("D:\Documents\Excel files\CBrates.xls")
Получаю Run-time error: '13'. Type mismach.

Причем, если это все сделать в Immediate окне, то ошибка не возникает.

В чем проблема?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.10.2003 (Чт) 11:05

Если используешь раннее связывание, ставь референс на объектную библиотеку экселя, и тогда будет достаточно dim objExl as new excel.application.
Если не используешь раннее связывание, объявляй переменные как object и юзай createobject(,"excel.application")
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

IgorOk
Обычный пользователь
Обычный пользователь
 
Сообщения: 54
Зарегистрирован: 29.01.2003 (Ср) 12:21

Сообщение IgorOk » 30.10.2003 (Чт) 11:28

Объявил как object, все сработало, спасибо.
Вопрос второй: как обновить web-query на листе Excel-я?
Попробовал скопировать то, что было написано для Excel-я:
Код: Выделить всё
Private objXL As Object

Sub s()

Set objXL = GetObject("D:\Documents\Excel files\CBrates.xls")
L = objXL.ActiveSheet.Cells(1, 9)

On Error GoTo errorhandler
    M = Month(L)
    D = Day(L)
    Y = Year(L)
    If M < 10 Then MS = "0" & M Else MS = M
    If D < 10 Then D = "0" & D
    With objXL.ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.cbr.ru/currency_base/D_print.asp?date_req=" & D & "/" & MS & "/" & Y & """", _
        Destination:=Range("A1"))
        .Name = "CBRrates"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "3"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False
    End With
    Exit Sub
errorhandler:
    MsgBox ("Error: probably internet connection can not be established." & " Displayed rates for " & L)
Set objXL = Nothing
End Sub


не работает, переходит на errorhandler в момент with

Что неправильно?

И может быть лучше открывать Excel и вызывать эту процедуру оттуда? Если да, то как эту процедуру оттуда вызвать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2003 (Пт) 9:25

Дело в том, что выражение Destination:=Range("A1") не имеет смысла при работе вне экселя. Нужно обязательно указывать имя листа: Destination:=objxl.ActiveSheet.Range("A1")

А вызывать очень просто. objxl.run "name"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

    TopList