Sicuro, come creare un'istanza di un'altra applicazione di Office e come chiuderlo se solo lo ha avviato

Traduzione articoli Traduzione articoli
Identificativo articolo: 555191 - Visualizza i prodotti a cui si riferisce l?articolo.
Autore: Tushar Mehta MVP
Espandi tutto | Chiudi tutto

Suggerimenti

Sicuro, come creare un'istanza di un'altra applicazione di Office e come chiuderlo se solo lo ha avviato

Autore
< / > l'AVANZARE Tushar Mehta č l'autore di questo suggerimento. Lo si raggiunge attraverso il suo sito Web: www.tushar-mehta.com
 
Introduzione
Oltre la volta, č diventato sempre pių semplice utilizzare codice VBA in un programma di Office per automatizzare un altro programma simile. Ad esempio ad esempio una singola istruzione
Imposta xlApp = nuovo Excel.Application
č tutto che č necessario per eseguire Excel. Per tutte sue le semplicitā, tuttavia esistono alcuni collaterali unpleasant che potrebbero hurt allo sviluppatore unwary. Questo suggerimento risolve due problemi di tipo.
 
Prima di ottenersi al problema di collaterali, la domanda dell'associazione anticipata l'associazione tardiva tuttavia esiste. L'istruzione precedente manda l'utilizzo dell'associazione anticipata e in alcuni casi che si puō non essere. Questo suggerimento risolve non solo i collaterali unpleasant ma funziona anche con l'associazione anticipata e tardiva.
 
Dopo che un programma si avvia (creata un'istanza di un programma con l'istruzione Impostato precedente), esso č la responsabilitā dello sviluppatore che lo gestisce. Per le applicazioni (come Excel) che possono avere che pių copie simultanee sono nell'esecuzione, ogni esecuzione di un'istruzione di tipo precedentemente uno avvia una nuova copia! Esso pertanto č come la responsabilitā dello sviluppatore come cui termina ciascuna copia con un'istruzione nell'esecuzione
xlApp.Quit
 
La memoria contraria verrā litter con le copie orfane del programma che solo si puō terminare tramite il Task Manager Windows (attivato con CTRL+ALT+CANC).
 
Per un'applicazione (quale PowerPoint) che si puō avere che la copia sola č nell'esecuzione, un'istruzione simile all'istruzione Impostato precedente si connetterā invece alla copia che č giā nell'esecuzione se uno č presente. Un .Quit successivo sarā pių fastidioso a un utente che ha avviato il programma e che lo utilizza per eseguire alcun lavoro!
 
Una soluzione che risolve entrambi problemi
Alla differenza dell'istruzione Impostato utilizzata in precedenza, č possibile distinguere fra la connessione a una copia che č giā nell'esecuzione e fra la connessione a una copia appena avviata del programma con l'utilizzo delle funzioni GetObject() e VB CreateObject(). Č inoltre possibile che decida che sia possibile distinguerlo fra il mezzo di due condizioni di interrompere il programma.
 
Nel seguente codice che hanno racchiuso gli utilizzi che associano la funzione GetObject() nell'anticipo dentro un errore, il gestore si connetterā alto con una copia dell'applicazione (PowerPoint in questo caso) che č giā nell'esecuzione. Se il ppApp variabile non č alcun ancora dopo la funzione GetObject(), non č chiaramente alcuna operazione di copia di PowerPoint che č giā nell'esecuzione. Pertanto, la funzione CreateObject() avvia l'applicazione e ottiene un riferimento a questa copia just-started. In questo caso, il codice imposta inoltre il flag IStartedPP.
 
Dopo che lo sviluppatore si esegue con qualsiasi lavoro č necessario che si esegua, il flag IStartedPP č un promemoria se questo codice ha avviato o o meno l'altra applicazione. Se esso ha, all'altra applicazione si indica che si chiuda. La variabile ppApp si imposta infine e incondizionatamente infine su Nothing.
 
Option Explicit
Il sub StartOtherApp()
    Disattivare ppApp PowerPoint.Application Come, Booleano Come IStartedPP,
    On Error Resume Next
    Imposta ppApp = GetObject(, "powerpoint.application")
    On Error GoTo 0
    Se ppApp Č Allora Niente
        IStartedPP = il true
        Imposta ppApp = CreateObject("powerpoint.application")
        End If
    '?
    ' Effettua qualsiasi STUFF
    '?
    Se IStartedPP Then
        ppApp.Quit
        End If
    Imposta ppApp = Nothing
    End Sub
 
Nota finale
Il codice in questo suggerimento risolve la domanda di eliminare correttamente dopo un quando alcuni di che per effettuare la connessione con altre applicazioni, č possibile essere giā eseguito e altri possono venire avviati dal codice. Il codice funziona inoltre con i client anticipatamente all'associazione tardiva.
< / > L'AVANZARE 
Riferimenti:
Un'introduzione a associare nell'anticipo e associare avanti:
Associare precedentemente e in seguito
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/SF7A4.asp
Automatizzare un'applicazione di Office da altra:
Creazione di variabili oggette per automatizzare un'altra applicazione Office
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deconcreatingobjectvariabletoautomateanotherofficeapplication.asp
Perché non si chiude un'applicazione quando si indica anche che si passi stoccaggio a esso:
Non si chiuderā il programma
http://www.tushar-mehta.com/excel/vba/xl_doesnt_quit/index.htm
 
 

Proprietā

Identificativo articolo: 555191 - Ultima modifica: venerdė 3 settembre 2004 - Revisione: 1.0
Le informazioni in questo articolo si applicano a
  • Microsoft Visual Basic for Applications 6.0
Traduzione automatica articoli
Il presente articolo č stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non č sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pių o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non č la sua. Microsoft non č responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica. Nel caso in cui si riscontrino degli errori e si desideri inviare dei suggerimenti, č possibile completare il questionario riportato alla fine del presente articolo.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 555191
DECLINAZIONE DI RESPONSABILITĀ DI COMMUNITY SOLUTIONS
MICROSOFT CORPORATION E/O I RELATIVI FORNITORI NON RILASCIANO ALCUNA DICHIARAZIONE RELATIVAMENTE ALL'ADEGUATEZZA, AFFIDABILITĀ, ACCURATEZZA DELLE INFORMAZIONI E DELLA GRAFICA IVI CONTENUTE. LA DOCUMENTAZIONE E LA RELATIVA GRAFICA VENGONO FORNITE "COSĖ COME SONO" SENZA GARANZIA DI ALCUN TIPO. CON LA PRESENTE MICROSOFT CORPORATION E/O I RELATIVI FORNITORI NON RICONOSCONO ALCUNA GARANZIA O CONDIZIONE RELATIVAMENTE ALLE PRESENTI INFORMAZIONI, INCLUSE TUTTE LE GARANZIE E CONDIZIONI IMPLICITE DI COMMERCIABILITĀ, IDONEITĀ PER UN FINE PARTICOLARE, TITOLARITĀ E NON VIOLAZIONE DEI DIRITTI ALTRUI. IN NESSUN CASO MICROSOFT E/O I RELATIVI FORNITORI SARANNO RESPONSABILI PER DANNI SPECIALI, INDIRETTI O CONSEQUENZIALI O PER ALTRI DANNI DI QUALSIASI TIPO RISULTANTI DA PERDITA DEL DIRITTO D'USO, PERDITA DI INFORMAZIONI O MANCATO GUADAGNO, SIANO ESSI RISULTANTI DALL'ADEMPIMENTO DEL CONTRATTO, DA NEGLIGENZA O DA ALTRE AZIONI LESIVE, DERIVANTI DA O IN QUALSIASI MODO CONNESSI ALL'UTILIZZO O ALLE PRESTAZIONI DELLE INFORMAZIONI IVI DISPONIBILI, ANCHE IN CASO DI ERRORE, TORTO, NEGLIGENZA, RESPONSABILITĀ ASSOLUTA PER IL PRODOTTO, VIOLAZIONE DEL CONTRATTO, ANCHE NEL CASO IN CUI MICROSOFT O I SUOI FORNITORI SIANO STATI AVVERTITI DELLA POSSIBILITĀ DEL VERIFICARSI DI TALI DANNI.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com