Como poner un logo en varios formularios

Tengo varios formularios en los que he insertado una imagen, que es el logo de mi empresa. Me gustaria tener ese logo de forma que cuando quiera modificarlo, no tenga que volver a insertarlo en todos los formularios, sino que de alguna forma, pudiera hacer una llamada desde cada formulario a ese archivo logo. No se, por ejemplo que el logo estuviera dentro de un campo y al modificar ese campo, me apareciese cambiado en todos los formularios donde interviene. No se si me explico. ¿Pueden ayudarme?

1

1 respuesta

Respuesta
1

Luis Miguel: Una manera de hacerlo es la siguiente. Primero la inserción de un Control en tus Formularios e informes que para el Código voy a llamar >> ImgLogo

Con el fin de escribir un poco menos pon ésta Función en un Módulo Standard.

Public Function RutaImgLogos() As String
RutaImgLogos = Application.CurrentProject.Path & "\Imagenes\Logos\"
End Function

Co ésto quiero decir que habrá una carpeta "Imagenes" colgando de la Carpeta donde esté la Base de Datos y a la vez una Carpeta "Logos" colgando de la anterior y esa es la que va a contener el Logo o los Logos que tu quieras. El Formato de las imágenes puede ser cualquiera de los admitidos, aunque yo en el Código pondré .png

En el Evento Form_Load si es un Formulario o Report_Load si es un Informe (El C´digo está para éste último)

Private Sub Report_Load()
Dim ElLogo As String
ElLogo = RutaImgLogos & "NombreDelLogo.png"
If ExisteFichero(ElLogo) = True Then
        Me.ImgLogo.Picture = ElLogo
Else
        ''Si no Existe se pueden contemplar dos alternativas:
        ''Alternativa Uno>> Que no ponga Imagen
        'Me.ImgLogo.Picture = ""
        'MsgBox "El Fichero  " & ElLogo & " no está en la Carpeta de Imagenes\Logos como se esperaba", vbCritical, "IMAGEN NO ENCONTRADA"
        'Alternativa Dos  >> Que ponga una por Omisión
        Dim ImgOmision As Variant
        ImgOmision = "LaImagenQueSea.jpg"
        Me.ImgLogo.Picture = RutaImgLogos & ImgOmision
        MsgBox "El Fichero  " & ElLogo & " no está en la Carpeta de Logos" & vbCrLf & _
                        "Se mostrará la Imagen por Omisión >>  " & ImgOmision, vbCritical, "IMAGEN ALTERNATIVA"
End If
End Sub

LaImagenQueSea es la que tu quieras, pero en tu caso no debería saltar a ella, porque solo habrá un Logo y es de esperar que siempre esté. Repara en que el Procedimiento está hecho, para que si quieres en cada Formulario o Informe te saque una Imagen. Basta Cambiar el Nombre donde pongo NombreDelLogo. Sería util si quieres imprimir cada Informe con la Foto de cada Empleado, declarando otra Carpeta que fuera ...FotosEmpleados

Y lógicamente vas a necesitar también la Función Existe Fichero, que para evitarla en cada Objeto, la pones también en un Módulo Estandar.

Public Function ExisteFichero(ElFichero As String) As Boolean
On Error Resume Next
ExisteFichero = Not (Dir(ElFichero) = "")
End Function

No creo dejarme nada en el tintero. Un saludo >> Jacinto

¡Gracias!  Jacinto. Muy amable, pero demasiado complicado para mis cortos conocimientos. Necesitaría algo mucho más fácil porque en eso que me escribes no entiendo casi nada. De nuevo, gracias muy sinceras.

Luis Miguel: Quizá haya alguna otra manera más simple para materializar tu idea pero no se me ocurre.

La alternativa que te ofrezco, siempre que no tengas datos personales o Confidenciales en tu Base de Datos, o sea que la tengas en proceso de desarrollo sin ese tipo de datos, es que me la envíes a [email protected] e intento ayudarte. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas