** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Application.FollowHyperlink ribbons abre mal
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoApplication.FollowHyperlink ribbons abre mal

 Responder Responder
Autor
Mensaje
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Tema: Application.FollowHyperlink ribbons abre mal
    Enviado: 19/Abril/2023 a las 19:25
Hola a todos.

Tengo una consulta que no he visto por internet. La única forma que he encontrado de abrir un archivo excel maximizado desde access es con Application.FollowHyperlink pero observo que cuando se abre, el ribbons sale en blanco un instante y luego aparece. No es como cuando abres el fichero directamente que aparece el ribbons automáticamente.

No me gusta como queda con el FollowHyperlink y da igual que abra un fichero desde mi ordenador o desde una unidad de red.

¿Alguna idea de por qué hace eso?

El código:

Dim strFichero, strRuta As String
strFichero = "Archivo1"
strRuta = "C:\Carpeta1\" & strFichero & ".xlsx"
Application.FollowHyperlink strRuta

Gracias,

Editado por paloma - 19/Abril/2023 a las 19:26
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 19/Abril/2023 a las 20:53
Un Saludo.
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Enviado: 19/Abril/2023 a las 21:47
hola, gracias mounir, lo que pasa que ese código ya lo había implementado y aunque el fichero excel se abre limpio, no se abre maximizado. He intentado pasar después esta línea:

ActiveWindow.Application.WindowState = xlMaximized

La primera vez que lo abro me funciona, el archivo se maximiza, pero si después lo vuelvo a abrir, me salta Error 91 "variable objeto o bloque with no establecido" en esa línea ¿por qué?
Arriba
joanka Ver desplegable
Habitual
Habitual


Unido: 07/Abril/2021
Localización: Lleida
Estado: Sin conexión
Puntos: 140
Enlace directo a este mensaje Enviado: 19/Abril/2023 a las 22:56
Hola,

Option Compare Database

    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'Abrir excel
Call ShellExecute(Me.hwnd, "Open", ruta, "", "", 1)
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Enviado: 19/Abril/2023 a las 22:57
Solucionado. Además del error 91 que decía, la maximización tampoco me gustaba, lo hacía un poco feo, no sé, debo ser muy quisquillosa :)

Lo que he hecho ha sido poner visible el objeto después de abrirlo, esto hace que no traiga al frente el archivo, pasarle el WindowState maximizado para finalmente forzar el foco a excel con la instrucción: AppActivate. Con todo esto, el fichero excel se abre, se maximiza y me lo muestra limpio.

Abrir_Excel.Workbooks.Open (strRuta)
Abrir_Excel.Visible = True
AppActivate "Excel" (instrucción que cambia el foco a una aplicación)

Dim xls As Object
Set xls = CreateObject("Excel.Application")
Dim strFichero, strRuta As String
strFichero = "Carpeta1"
strRuta = "C:\Carpeta1\" & strFichero & ".xlsx"

xls.Workbooks.Open (strRuta)
xls.Application.WindowState = xlMaximized
xls.Visible = True
AppActivate "Excel"

:)

Pueden cerrar el hilo

Saludos,
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Enviado: 19/Abril/2023 a las 23:30





Hola joanka, muchas gracias por contestar y disculpa que no había visto tu mensaje. Aunque ya lo he solucionado, eso que pones, por curiosidad, ¿qué es realmente, osea, por qué tengo que declarar esa variable?, ¿no tiene que ver con la CPU de 32 ó 64? Lo he leído en algún lado y no lo entiendo la verdad.

Muchas gracias
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Enlace directo a este mensaje Enviado: 19/Abril/2023 a las 23:50
El ShellExecute es una API de Windows  (Application Programming Interface) son una serie de funciones de sistema del sistema operativo, que se pueden llamar a partir de VBA. aunque también lo podías hacer con el Objeto Shell.


Saludos.
Arriba
joanka Ver desplegable
Habitual
Habitual


Unido: 07/Abril/2021
Localización: Lleida
Estado: Sin conexión
Puntos: 140
Enlace directo a este mensaje Enviado: 20/Abril/2023 a las 09:02
Hola,

Este código usa la función de API ShellExecute de la biblioteca "shell32.dll" para ejecutar un archivo o programa externo desde Access.

Dim ruta As String
ruta = "C:\miexcel.xlsx"
Call ShellExecute(Me.hwnd, "Open", ruta, "", "", 1)

Me alegro que lo hayas solucionado.
Saludos.
Arriba
paloma Ver desplegable
Habitual
Habitual


Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Enviado: 20/Abril/2023 a las 16:57
ah gracias joanka. Lo acabo de intentar y funciona. He declarado la variable en el módulo de formulario porque lo has puesto como Private, supongo que también se podrá poner Publico en un módulo verdad?

Pues ya tengo 2 formas de hacerlo, muchas gracias!! :)

Pueden cerrar el hilo

Saludos,
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable