Autor |
Tema Buscar Opciones del Tema
|
paloma
Habitual
Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
|
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
|
|
mounir
Colaborador
Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
|
Enviado: 19/Abril/2023 a las 20:53 |
|
Un Saludo.
|
|
paloma
Habitual
Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
|
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é?
|
|
joanka
Habitual
Unido: 07/Abril/2021
Localización: Lleida
Estado: Sin conexión
Puntos: 140
|
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)
|
|
paloma
Habitual
Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
|
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,
|
|
paloma
Habitual
Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
|
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
|
|
emiliove
Administrador
Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
|
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.
|
|
joanka
Habitual
Unido: 07/Abril/2021
Localización: Lleida
Estado: Sin conexión
Puntos: 140
|
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.
|
|
paloma
Habitual
Unido: 24/Junio/2010
Estado: Sin conexión
Puntos: 97
|
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,
|
|