Come trovare altre istanze di Excel in una macro

Se esegui un programma VBA da una particolare istanza di Excel, puoi creare altre istanze di Excel, aprire e modificare cartelle di lavoro nelle istanze appena create e quindi chiudere tali istanze. Tuttavia, potresti chiederti come determinare, all’interno di una macro, se altre istanze di Excel sono già in esecuzione e, in tal caso, assumerne il controllo.

Ci sono alcuni modi in cui puoi farlo. Se vuoi semplicemente sapere quante istanze di Excel sono in esecuzione, puoi utilizzare una macro che utilizza le API di Windows. La seguente funzione implementa questo approccio:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Questo, ovviamente, non ti consentirà di accedere alle singole istanze di Excel; restituisce solo un conteggio del numero di istanze aperte. Se desideri sviluppare codice per utilizzare le istanze, non è necessario fare affidamento sulle API di Windows. È invece possibile utilizzare codice come il seguente per determinare se un’istanza di Excel è aperta:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Se un’istanza è in esecuzione, puoi accedervi utilizzando l’oggetto xlApp. Se un’istanza non è in esecuzione, verrà visualizzato un errore di runtime. La funzione GetObject ottiene la prima istanza di Excel caricata. Per arrivare alle altre, puoi chiuderla e provare di nuovo GetObject per ottenere quella successiva, ecc.

Se desideri impostare xlApp su una particolare istanza di Excel, puoi farlo se conosci il nome di una cartella di lavoro aperta in quell’istanza:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

 

Tags: , , , , , ,

Ti è stato utile?