2012-04-24 24 views
6

Ho un metodo VBA di Excel (non l'ho scritto) che viene eseguito e una delle prime cose che fa è nascondere la sessione di Excel Application.Visible = False.Esegui sessione applicazione Excel

Tuttavia, quando il metodo è terminato, non mostra la sessione di Excel in modo che rimanga aperta ed elencata nel Task Manager ma sia nascosta e apparentemente inutilizzabile.

Qualcuno sa, senza avere il VBE aperto (quindi è possibile accedere alla Finestra Immediata ed eseguire Application.Visible = True), come scoprire questa sessione di Excel? Al momento, sto semplicemente dovendo uccidere la sessione usando il Task Manager.

Questo non è un grosso problema, ma sono solo interessato se qualcuno sa come far risorgere tale sessione.

+1

Questo è un caso di programmazione scadente. Anche se diamo un codice per chiudere tutte le istanze di Excel nascoste, questo non ti aiuterà. Perché la prossima volta che eseguirai quella macro, dovrai affrontare di nuovo lo stesso problema. Perché non modificare il codice esistente e aggiungere 'Application.Visible = True' alla fine? La password VBA è protetta? –

+0

@SiddharthRout Sono completamente d'accordo (dovresti vedere lo stato del resto del codice!). Devo solo eseguire l'app per produrre alcuni report e sono stufo di dover interrompere le sessioni quando mi dimentico di tenere aperto il VBE. Sfortunatamente, non ho il controllo per apportare le modifiche richieste. Come ho detto, non è un grosso problema, ma era solo interessato se qualcuno conosceva il tasto di scelta rapida o qualcosa per riportarlo indietro. – markblandford

+1

Ciao creamyegg. Se apri un file Excel, renderà visibile l'istanza excel corrente. – CaBieberach

risposta

9

Come ho detto, non è un grosso problema, ma era solo interessato se qualcuno conosceva il tasto di scelta rapida o qualcosa per riportarlo indietro.

Non esiste una scorciatoia di cui sia a conoscenza, ma è possibile farlo.

Aprire MS Word e incollare questo codice nell'editor VBA. Chiudi tutte le istanze aperte di Excel che sono visibili e quindi eseguite e questo codice. Ciò renderà visibile un'istanza nascosta. Chiudere manualmente l'istanza e ripetere il processo se ci sono più istanze.

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 

Non sto deliberatamente utilizzando un ciclo come istanza nascosta può avere una cartella di lavoro che si potrebbe risparmiare?

Se si desidera è possibile convertire il codice precedente in un documento VB Script che è possibile eseguire direttamente dal desktop.

Sfortunatamente, non ho il controllo per apportare le modifiche richieste.

Cosa intendi esattamente? La password VBA è protetta? Se no, il mio suggerimento è sempre lo stesso di prima

Questo è un caso di programmazione scadente. Anche se diamo un codice per chiudere tutte le istanze di Excel nascoste, che non ti aiuteranno. Perché la prossima volta che esegui quella macro, eseguirai di nuovo lo stesso problema. Perché non modificare il codice esistente e aggiungere Application.Visible = True alla fine? La password VBA è protetta? - Siddharth Rout 28 minuti fa

+0

Grazie @SiddharthRout, darò che io vada. Ciò che intendo per non essere in grado di apportare le modifiche, è che al mio posto, la burocrazia per fare un semplice cambio di codice di una riga è orrenda e quindi non voglio nemmeno andarci. Non ne vale la pena! :) – markblandford

+0

Funziona magnificamente, grazie! – markblandford

0

Ho avuto un problema simile e l'ho risolto con il riordino della riga di codice.

Cercare una riga come questa ActiveWorkbook.Close che potrebbe essere il motivo per cui non è possibile visualizzare la sessione.

Se riesci a trovarlo, inserisci Application.Visible = True poco prima e voilà.

0

come codice:

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!

Aprite Word, a patto di avere, e aprire l'editor VBA lì, quindi aprire la finestra immediata (Ctrl + G) e digitare:

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

e premere invio.

Problemi correlati