2012-04-24 10 views
6

Tengo un método de Excel VBA (no lo escribí) que se ejecuta y una de las primeras cosas que hace es ocultar la sesión de Excel Application.Visible = False.Mostrar la sesión de la aplicación de Excel

Sin embargo, cuando el método ha finalizado, no muestra la sesión de Excel, por lo que permanece abierta y aparece en el Administrador de tareas, pero está oculta y aparentemente inutilizable.

¿Alguien sabe, sin tener el VBE abierto (para que uno pueda acceder a la ventana Inmediato y ejecutar Application.Visible = True), cómo mostrar esta sesión de Excel? Por el momento, simplemente tengo que matar la sesión usando el Administrador de tareas.

Esto no es un trato masivo, pero estoy interesado si alguien sabe cómo resucitar tal sesión.

+1

Este es un caso de mala programación. Incluso si le damos un código para cerrar todas las instancias ocultas de Excel, eso no lo ayudará. Porque la próxima vez que ejecute esa macro, se enfrentará nuevamente al mismo problema. ¿Por qué no edita el código existente y agrega 'Application.Visible = True' al final? ¿Está protegida la contraseña de VBA? –

+0

@SiddharthRout Estoy completamente de acuerdo (¡debería ver el estado del resto del código!). Solo tengo que ejecutar la aplicación para producir algunos informes y me estoy hartando de tener que matar sesiones cuando olvido mantener el VBE abierto. Lamentablemente, no tengo el control para realizar los cambios necesarios. Como dije, no es gran cosa, pero estaba interesado si alguien conocía la tecla de acceso directo o cualquier otra cosa para recuperarla. – markblandford

+1

Hola creamyegg. Si abre cualquier archivo de Excel, hará que la instancia de Excel actual sea visible. – CaBieberach

Respuesta

9

Como dije, no es un gran problema, pero estaba interesado si alguien conocía la tecla de acceso directo o cualquier otra cosa para recuperarla.

No hay ningún atajo como tal del que sea consciente, pero puede hacerlo.

Abra MS Word y pegue este código en el Editor de VBA. Cierre todas las instancias abiertas de Excel que estén visibles y luego ejecute y este código. Esto hará que una instancia oculta sea visible. Cierre manualmente la instancia y repita el proceso si hay más instancias.

Option Explicit 

Sub Sample() 
    Dim oXLApp As Object 

    '~~> Get an existing instance of an EXCEL application object 
    On Error Resume Next 
    Set oXLApp = GetObject(, "Excel.Application") 
    On Error GoTo 0 

    oXLApp.Visible = True 

    Set oXLApp = Nothing 
End Sub 

no soy el uso deliberado de un bucle como la instancia oculta puede tener un libro el que le gustaría ahorrar?

Si lo desea, puede convertir el código anterior en un documento de VB Script que puede ejecutar directamente desde el escritorio.

Lamentablemente, no tengo el control para realizar los cambios necesarios.

¿Qué quiere decir exactamente? ¿Está protegida la contraseña de VBA? Si no, mi sugerencia es la misma que la anterior

Este es un caso de mala programación. Incluso si le damos un código para cerrar todas las instancias ocultas de Excel, eso no lo ayudará. Porque la próxima vez que ejecute esa macro, se encontrará con el mismo problema nuevamente. ¿Por qué no edita el código existente y agrega Application.Visible = True al final? ¿Está protegida la contraseña VBA? - Siddharth Rout hace 28 minutos

+0

Gracias @ SiddharthRout, voy a dar que voy. Lo que quiero decir con que no soy capaz de hacer los cambios, es que en mi lugar, la burocracia para hacer un simple cambio de código de una línea es terrible, así que simplemente no quiero ir allí. ¡No vale la pena el dolor! :) – markblandford

+0

Funciona muy bien, gracias! – markblandford

0

Tuve un problema similar y lo resolví con la reordenación de la línea de código.

Busque una línea como esta ActiveWorkbook.Close que podría ser la razón por la que no puede mostrar la sesión.

Si puede encontrarlo, ponga Application.Visible = True justo antes y listo.

0

como código:

sub runthis() 
    dim xl as object 
    set xl = new excel.application 'create session 
    xl.workbooks.open filename:= "«yourpath»" 'open wb in the new session 
    xl.visible=true 'this is what you need, show it up! 
    'rest of the code 
end sub 
0

A good solution!

Abierta a Word, suponiendo que lo tienes, y abra el editor de VBA allí, a continuación, abra la ventana Inmediato (Ctrl + G) y el tipo:

Getobject(, "Excel.Application").Visible = true

y pulse enter.

Cuestiones relacionadas