Como com segurança criar instância outro aplicativo do Office e fechar ele somente se você iniciou-lo

Traduções deste artigo Traduções deste artigo
ID do artigo: 555191 - Exibir os produtos aos quais esse artigo se aplica.
Author: Tushar Mehta MVP
Expandir tudo | Recolher tudo

Dicas

Como com segurança criar instância outro aplicativo do Office e fechar ele somente se você iniciou-lo

Autor
O autor dessa dica é Mehta Tushar. Você pode acessá-lo a seu site W3 (World Wide Web): www.tushar-mehta.com
 
Introdução
Sobre tempo, tornou-se mais cada vez mais fáceis de serem usar Visual Basic for Applications codificar em um programa Office para automatizar outro programa semelhante. Para exemplo, uma única declaração such as
Definir xlApp = novo Excel.Application
é tudo que é necessário para executar Excel. No entanto, para todos os seu facilidade, há alguns lado desagradável efeitos que danificará o desenvolvedor unwary. Esta dica soluciona esses dois problemas.
 
Entretanto, antes de obter para a emitir de Side-Effects, há a pergunta de ligação inicial versus ligação atrasada. A declaração acima exige o uso de ligação inicial, e em alguns casos que podem não ser tão desejáveis. Esta dica endereços não somente o lado desagradável efeitos mas também funciona com ambos e ligação atrasada mais cedo.
 
Depois que um programa for iniciado (instanciado com a declaração conjunto acima) é responsabilidade do desenvolvedor do para gerenciá-lo. Para aplicativos (such As Excel) que podem ter múltiplo simultâneo copia execução, cada execução de uma declaração como aquele acima é iniciado um novo copiar! Portanto, é responsabilidade do desenvolvedor do para finalizar como cada copiar execução com uma declaração
xlApp.Quit
 
Será memória caso contrário ser littered com cópias órfãos o programa que pode apenas ser finalizado o Windows Task Manager (Ativado com CTRL+ALT+DELETE) através de.
 
On the Other hand, para um aplicativo (such as PowerPoint) que pode ter apenas um copiar execução, uma declaração semelhante a declaração conjunto acima será conectar para o já execução copiar, caso haja algum. Um.Quit subseqüente seria mais irritante para um usuário que o programa iniciado e estiver usando ele fazer algum trabalho!
 
Os dois problemas um de resolução solução
Diferente a declaração conjunto usada acima, é possível distinguir entre conectando um já execução copiar e conectar-se a um copiar recém-iniciado do programa com o uso das funções GetObject() e CreateObject() VB. Poder distinguir entre as duas condições significa também é possível decidir se ou não para finalizar o programa.
 
Na codificar abaixo, que usa a função GetObject(), ligação inicial, será ajustada dentro uma manipulador de erro conectar backup com uma já execução copiar do aplicativo (PowerPoint neste maiúsculas e minúsculas). Se a variável continua ppApp nada após a função GetObject(), claramente há sem copiar de PowerPoint já execução. Portanto, a função CreateObject() inicializado o aplicativo e get uma referência a esse copiar just-Started. Neste maiúsculas e minúsculas, também a codificar define o sinalizador IStartedPP.
 
Depois que o desenvolvedor é feito com qualquer trabalho precise ser feito, o sinalizador IStartedPP é um lembrete de se este codificar iniciado o outro aplicativo ou não. Se ele, o outro aplicativo é informado para encerrar. Finalmente finalmente, e incondicional, a variável ppApp é definida como Nothing.
 
Opção EXPLICIT
StartOtherApp() Sub
    Dim ppApp PowerPoint.Application como, IStartedPP As Boolean
    On Error continuar Avançar
    Definir ppApp = GetObject(, "PowerPoint.Application")
    Na instrução On Error GoTo 0
    Se ppApp É Nothing Then
        IStartedPP = True
        Definir ppApp = CreateObject("PowerPoint.Application")
        Final se
    '?
    ' Fazer qualquer material
    '?
    Se em seguida IStartedPP
        ppApp.Quit
        Final se
    Definir ppApp = Nothing
    Sub final
 
Observação final
A codificar nesta dica responde à seguinte pergunta de corretamente limpeza após oneself ao conectar-se com outros aplicativos, alguns dos quais podem já estar execução e outros podem ser iniciados pela codificar. Além disso, a codificar funciona com antecedência - ligado e atrasado - ligado clientes.
 
referências :
Uma introdução ao ligação inicial e ligação atrasada:
Vinculação antecipada e mais tarde
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/office97/html/SF7A4.asp
Automatizar um do outro aplicativo do Office:
A criação de variáveis de objeto para Automatizar outro aplicativo Office
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deconcreatingobjectvariabletoautomateanotherofficeapplication.asp
Por que um aplicativo não encerrar mesmo quando ele é informado para ir fora:
Programa não encerrar
http://www.tushar-mehta.com/excel/vba/xl_doesnt_quit/index.htm
 
 

Propriedades

ID do artigo: 555191 - Última revisão: sexta-feira, 3 de setembro de 2004 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic for Applications 6.0
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Caso tenha encontrado erros neste artigo e queira colaborar no processo de aperfeiçoamento desta ferramenta, por favor preencha o formulário existente na parte inferior desta página. Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 555191
AVISO DE ISENÇÃO DE CONTEÚDO DAS SOLUÇÕES DA COMUNIDADE
A MICROSOFT CORPORATION E/OU SEUS RESPECTIVOS FORNECEDORES NÃO FAZEM REPRESENTAÇÕES SOBRE A ADEQUAÇÃO, A CONFIABILIDADE OU A PRECISÃO DAS INFORMAÇÕES E DOS ELEMENTOS GRÁFICOS RELACIONADOS AQUI CONTIDOS. TAIS INFORMAÇÕES E ELEMENTOS GRÁFICOS SÃO FORNECIDOS "COMO ESTÃO", SEM GARANTIA DE QUALQUER TIPO. A MICROSOFT E/OU SEUS RESPECTIVOS FORNECEDORES ISENTAM-SE, POR MEIO DESTE, DE QUAISQUER GARANTIAS E CONDIÇÕES RELATIVAS A ESSAS INFORMAÇÕES E ESSES ELEMENTOS GRÁFICOS RELACIONADOS, INCLUINDO TODAS AS GARANTIAS E CONDIÇÕES IMPLÍCITAS DE COMERCIABILIDADE, ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO, HABILIDADE, PROPRIEDADE E NÃO-VIOLAÇÃO. ESPECIFICAMENTE, VOCÊ CONCORDA QUE, EM NENHUMA HIPÓTESE, A MICROSOFT E/OU SEUS FORNECEDORES SERÃO RESPONSABILIZADOS POR QUAISQUER DANOS DIRETOS, INDIRETOS, PUNITIVOS, INCIDENTAIS, ESPECIAIS, CONSEQÜENCIAIS OU QUAISQUER OUTROS DANOS, INCLUINDO, SEM LIMITAÇÃO, DANOS POR PERDA DE USO, DADOS OU LUCROS RESULTANTES DE OU RELACIONADOS, DE QUALQUER OUTRA FORMA, AO USO OU À INCAPACIDADE DE USO DAS INFORMAÇÕES E DOS ELEMENTOS GRÁFICOS AQUI CONTIDOS, SEJA COM BASE EM CONTRATO, ATO ILÍCITO, NEGLIGÊNCIA, RESPONSABILIDADE EXPRESSA OU OUTROS, MESMO QUE A MICROSOFT OU QUALQUER UM DE SEUS FORNECEDORES TENHA SIDO AVISADA SOBRE A POSSIBILIDADE DE DANOS.

Submeter comentários

 

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