Question : ServerXMLHTTP in Excel - how to disable error messages on the screen?

Hello,

david251 posted the code below - thank you by the way - and I modified it.
I want to handle timeouts myself (by retrying) but unfortunately I get this message:
 
the message, I don't want
327783
 

and the program stops. :-(

So I was wondering if there is any chance to disable errors lead to a message on the screen.

Thank you very much for every tip.

Christine
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Dim objHTTP As ServerXMLHTTP
    Dim RetryCnt
    RetryCnt = 3
    While RetryCnt > 0
        Set objHTTP = New ServerXMLHTTP
        objHTTP.Open "GET", sURL
        objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
        objHTTP.send
        objHTTP.WaitForResponse 1
        GetHTMLServerXMLHTTP = objHTTP.responseText
        RetryCnt = RetryCnt - 1
        If GetHTMLServerXMLHTTP <> "" Then RetryCnt = -1
    Wend
    If RetryCnt = 0 Then GetHTMLServerXMLHTTP = "1 - timeout; can't connect to server"
    Set objHTTP = Nothing

Answer : ServerXMLHTTP in Excel - how to disable error messages on the screen?

I'm not sure how to get the above code working. This is code I use to access web pages. It's third or fourth generation and pretty robust. This is a complete code module.

' clsInternetConnection
'
' Class provides functionalty to read web pages.
'
' Implemented as a class module for use with any VB or VBA project.
'
' © 2008-2010 Kevin M. Jones

Option Explicit

Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const INTERNET_FLAG_PRAGMA_NOCACHE = &H100
Private Const INTERNET_OPTION_RECEIVE_TIMEOUT As Long = 6

Private Const UserAgent = "VB"

Private mConnectionHandle As Long
Private mTimeoutSeconds As Long

Private Declare Function InternetCloseHandle Lib "wininet" ( _
     ByRef hInet As Long _
  ) As Long

Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" ( _
     ByVal sAgent As String, _
     ByVal lAccessType As Long, _
     ByVal sProxyName As String, _
     ByVal sProxyBypass As String, _
     ByVal lFlags As Long _
  ) As Long

Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" ( _
     ByVal hInternetSession As Long, _
     ByVal lpszUrl As String, _
     ByVal lpszHeaders As String, _
     ByVal dwHeadersLength As Long, _
     ByVal dwFlags As Long, _
     ByVal dwContext As Long _
) As Long

Private Declare Function InternetReadFile Lib "wininet" ( _
     ByVal hFile As Long, _
     ByVal sBuffer As String, _
     ByVal lNumBytesToRead As Long, _
     lNumberOfBytesRead As Long _
  ) As Integer
 
Private Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" ( _
     ByVal hInternet As Long, _
     ByVal dwOption As Long, _
     ByRef lpBuffer As Any, _
     ByVal dwBufferLength As Long _
  ) As Long

Private Sub Class_Initialize()

  mConnectionHandle = InternetOpen(UserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
  If mConnectionHandle = 0 Then
     MsgBox "Unable to open an Internet connection. The most likely cause is too many handles have been created."
  End If
  mTimeoutSeconds = 30

End Sub

Private Sub Class_Terminate()

  InternetCloseHandle mConnectionHandle
     
End Sub

Public Function GetWebPage( _
     ByVal URL As String, _
     Optional ByVal ProxyUserID As String, _
     Optional ByVal ProxyPassword As String, _
     Optional ByVal TimeoutSeconds As Long _
  ) As String

' Get a web page.
'
' Syntax
'
' GetWebPage(URL, [ProxyUserID], [ProxyPassword])
'
' URL - A complete URL to a web page.
'
' ProxyUserID - The user ID for the proxy server, if any. Optional. If omitted
'   then no proxy server is assumed.
'
' ProxyPassword - The password for the proxy server. Optional. Ignored if
'   ProxyUserID is omitted.
'
' TimeoutSeconds - The number of seconds to wait until timing out. Optional.
'   If omitted then 30 seconds is used.

  Dim ConnectionHandle As Long
  Dim URLHandle As Long
  Dim BytesRead As Long
  Dim Result As Boolean
  Dim InputBuffer As String * 10000
  Dim PageContent As String
  Dim SecurityData As String
 
   If Len(ProxyUserID) > 0 Then
     SecurityData = ProxyUserID
     If Len(ProxyPassword) > 0 Then
        SecurityData = SecurityData & ":" & ProxyPassword
     End If
     SecurityData = SecurityData & "@"
     URL = Replace(URL, "://", "://" & SecurityData)
  End If
 
   If TimeoutSeconds = 0 Then TimeoutSeconds = mTimeoutSeconds
 
   If mConnectionHandle <> 0 Then
     Result = InternetSetOption(mConnectionHandle, INTERNET_OPTION_RECEIVE_TIMEOUT, TimeoutSeconds * 1000, Len(TimeoutSeconds))
     URLHandle = InternetOpenUrl(mConnectionHandle, URL, vbNullString, 0, INTERNET_FLAG_RELOAD Or INTERNET_FLAG_PRAGMA_NOCACHE, 0)
     If URLHandle <> 0 Then
        Do
           InputBuffer = vbNullString
           Result = InternetReadFile(URLHandle, InputBuffer, Len(InputBuffer), BytesRead)
           PageContent = PageContent & Left(InputBuffer, BytesRead)
        Loop While BytesRead > 0
        InternetCloseHandle URLHandle
     End If
  End If
 
   GetWebPage = PageContent
 
End Function

Public Property Get ValidInternetConnection() As Boolean

  ValidInternetConnection = mConnectionHandle <> 0

End Property

Public Property Get TimeoutSeconds() As Long

  TimeoutSeconds = mTimeoutSeconds

End Property

Public Property Let TimeoutSeconds( _
     ByVal Value As Long _
  )

  mTimeoutSeconds = Value

End Property

Kevin
Random Solutions  
 
programming4us programming4us