** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Accion solo si existe archivo en la web
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Accion solo si existe archivo en la web

 Responder Responder
Autor
Mensaje
ruidodemente Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 23/Abril/2010
Localización: Argentina
Estado: Sin conexión
Puntos: 223
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita ruidodemente Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Accion solo si existe archivo en la web
    Enviado: 24/Julio/2024 a las 01:01
Buenas. Tengo un formulario que quiero que se abra solo si existe este archivo web. Es para poder tener una forma remota de seguridad. y que al no existir este archivo no se abra o hada alguna accion.

Espero se entienda. Muchas gracias.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 24/Julio/2024 a las 17:50
Hola,

Los pasos que seguiría yo. En el evento Open del formulario.

- Evaluar si tienes conexión a internet
- Intentar descargar el fichero

Si no tienes conexión o no puede leer/descargar el fichero, cancelas la apertura del form (Cancel = True)


Te dejo un módulo con varias funciones que manejan conexión, leen ficheros y descargan.

Option Compare Database
Option Explicit


' Codigo original de Glen Kruger

#If Win64 Then
    Private Declare PtrSafe Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
    Private Declare PtrSafe Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInet 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 PtrSafe Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long
    Private Declare PtrSafe Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
    Private Declare PtrSafe 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
#Else
    Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
    Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInet 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 InternetCloseHandle Lib "wininet.dll" (ByVal hInet 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 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
#End If

Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000

Dim x       As Boolean
Dim hInet   As Long
Dim hUrl    As Long
Dim Flags   As Long
Dim URL     As Variant

Public Function CheckConnection() As Boolean
    hInet = InternetOpen(" ", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&)
    If hInet Then
        Flags = INTERNET_FLAG_KEEP_CONNECTION Or INTERNET_FLAG_NO_CACHE_WRITE Or INTERNET_FLAG_RELOAD
        hUrl = InternetOpenUrl(hInet, "http://www.google.com", vbNullString, 0, Flags, 0)
        If hUrl Then
            CheckConnection = True
            Call InternetCloseHandle(hUrl)
        Else
            CheckConnection = False
            x = False
        End If
    End If
    Call InternetCloseHandle(hInet)

End Function

Function ReadUrlText(StrUrl As String) As String

    ' lee un fichero de texto situado en un url determinada
    Dim hOpen   As Long
    Dim hFile   As Long
    Dim sBuffer As String
    Dim ret     As Long
    
    sBuffer = Space(100000)
    hOpen = InternetOpen("", 1, vbNullString, vbNullString, 0)
    hFile = InternetOpenUrl(hOpen, StrUrl, vbNullString, ByVal 0&, &H80000000, ByVal 0&)
    InternetReadFile hFile, sBuffer, 100000, ret
    InternetCloseHandle hFile
    InternetCloseHandle hOpen
    ReadUrlText = sBuffer
End Function

Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean

    ' descarga el fichero de URL en la ruta especificada
    Dim lngRetVal As Long
    
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
    If lngRetVal = 0 Then
        DownloadFile = True
    End If

End Function
Xavi, un minyó de Terrassa

Mi web
Arriba
ruidodemente Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 23/Abril/2010
Localización: Argentina
Estado: Sin conexión
Puntos: 223
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita ruidodemente Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 24/Julio/2024 a las 20:19
Xavi una genialidad!  con esto ya puedo lograr lo requerido. Agradecido como siempre!!!
Arriba
jebcarlos Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 16/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 277
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jebcarlos Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 25/Julio/2024 a las 02:27
Xavi buenas noches una pregunta el módulo con que navegador funciona?< ="moz-extension://5aa6f639-3adc-4775-9896-7bf1587bf477/js/app.js" ="text/">
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 25/Julio/2024 a las 08:50
Hola jebcarlos,

La verdad es que no tengo ni idea. Se que en su momento funcionaba con un navegador Chrome como predeterminado y ahora lo hace con un Edge. 

Es algo que escapa de mi conocimiento.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3878
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita lbauluz Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 31/Julio/2024 a las 14:34
Solía funcionar con el Explorer, con las versiones nuevas supongo que con Edge.
El Búho es un pajarraco
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable