Application.FollowHyperlink ribbons abre mal
Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86665
Fecha de impresión: 27/Marzo/2026 a las 06:42
Tema: Application.FollowHyperlink ribbons abre mal
Publicado por: paloma
Asunto: Application.FollowHyperlink ribbons abre mal
Fecha de publicación: 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,
|
Respuestas:
Publicado por: mounir
Fecha de publicación: 19/Abril/2023 a las 20:53
Hola!
Mírate este enlace https://lluisvera.com/access-abrir-fichero-excel/" rel="nofollow - https://lluisvera.com/access-abrir-fichero-excel/
------------- Un Saludo.
|
Publicado por: paloma
Fecha de publicación: 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é?
|
Publicado por: joanka
Fecha de publicación: 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)
|
Publicado por: paloma
Fecha de publicación: 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,
|
Publicado por: paloma
Fecha de publicación: 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
|
Publicado por: emiliove
Fecha de publicación: 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.
|
Publicado por: joanka
Fecha de publicación: 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.
|
Publicado por: paloma
Fecha de publicación: 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,
|
|