Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2011, 07:14   #1
Sergey_Rozhkov
Новичок
Джуниор
 
Регистрация: 27.01.2011
Сообщений: 5
По умолчанию VBA - необходимо прочитать содержимое файла на сервере

Здравствуйте.
Мне необходимо с помощью vba прочитать файл на сервере.
Например, прочитать инфу из файла, находящегося по адресу "http://mysite.com/1.txt" (это пример ссылки!).
Попробовал сделать по аналогии с http://r3code.livejournal.com/125605.html
(получение текущего курса валют), но там посылается xml-запрос и, естественно, создаются соответствующие объекты, которые в моем случае не нужны. Поисковики выдают кучу примеров для VB, а не для vba. Помогите пожалуйста работающим примером!

Последний раз редактировалось Sergey_Rozhkov; 27.01.2011 в 07:39.
Sergey_Rozhkov вне форума Ответить с цитированием
Старый 27.01.2011, 14:01   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long

Function DownLoadFile(FromName, ToName) As Boolean
    DownLoadFile = URLDownloadToFile(0, FromName, ToName, 0, 0) = 0
End Function

Sub Main()
    link = "http://mysite.com/1.txt"
    FileToLoad = ("C:\1.txt")
            If DownLoadFile(link, FileToLoad) Then
             MsgBox "Скачан файл: " & link
            Else
                MsgBox "Мимо кассы", vbCritical
            End If
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.01.2011, 06:38   #3
Sergey_Rozhkov
Новичок
Джуниор
 
Регистрация: 27.01.2011
Сообщений: 5
По умолчанию

doober, большое спасибо!
Файл я закачать смог, но возможно ли сразу его читать с сервера? Потому что сейчас получается, что нужно сделать 3 действия: закачать, открыть и удалить. Сделать это конечно можно, но нужно придумывать обработку, например, для нехватки дискового пространства...
Sergey_Rozhkov вне форума Ответить с цитированием
Старый 28.01.2011, 08:14   #4
Sergey_Rozhkov
Новичок
Джуниор
 
Регистрация: 27.01.2011
Сообщений: 5
По умолчанию

Кстати, вот что:
эта функция как-то странно работает: первый раз она загружает файл нормально, но если файл на сервере изменить, то последующие разы она будет загружать старую версию файла . Перезапустив приложение (у меня это Access), она наконец начинает видеть измененный файл
Sergey_Rozhkov вне форума Ответить с цитированием
Старый 28.01.2011, 10:15   #5
Sergey_Rozhkov
Новичок
Джуниор
 
Регистрация: 27.01.2011
Сообщений: 5
По умолчанию

с закачкой старой версии файла разобрался: нужно почистить кэш.
Для этого использовал функцию:

Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
Sergey_Rozhkov вне форума Ответить с цитированием
Старый 28.01.2011, 10:45   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Этот вариант рабочий,текстовик нормально берет.
Функция взята с сайта EducatedFool

Код:
Function GetHTTPResponse(ByVal sURL As String) As String
    On Error Resume Next
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    With oXMLHTTP
        .Open "GET", sURL, False
        ' раскомментируйте следующие строки и подставьте верные IP, логин и пароль
        ' если вы сидите за proxy
        ' .setProxy 2, "192.168.100.1:3128"
        ' .setProxyCredentials "user", "password"
        .send
        sHTMLBody = .responseBody
    End With
    For i = 0 To UBound(sHTMLBody)
        GetHTTPResponse = GetHTTPResponse & ChrW(AscW(Chr(AscB(MidB(sHTMLBody, i + 1, 1)))))
    Next
    Pi.Hide
    Set oXMLHTTP = Nothing
End Function
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.01.2011, 12:55   #7
Sergey_Rozhkov
Новичок
Джуниор
 
Регистрация: 27.01.2011
Сообщений: 5
По умолчанию

Спасибо, отлично срабатывает

Правда я так и не понял: у нас стоит комп, через который все другие компьютеры сети имеют доступ в Интернет. Насколько я понимаю это и есть прокси-сервер. Но я не стал оживлять строчки для этого случая и все-равно файл с интернета был успешно прочитан. Т.е. я не за прокси сижу?
Sergey_Rozhkov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка существования файла на сервере puKo PHP 10 09.08.2010 15:01
Реальное расположение файла на сервере weiss Свободное общение 11 28.07.2009 11:29
Содержимое файла terminadoor Работа с сетью в Delphi 0 15.12.2008 00:25
Можно-ли прочитать данные с COM-порта в VBA? Gawwws Microsoft Office Excel 1 28.10.2008 15:26
Как прочитать текстовый файл на удаленном компьютере/сервере (с авторизацией) 3lander Общие вопросы Delphi 4 07.08.2008 18:20