VBA Office: Controlando aplicativo Office a partir de outro.

Talvez deseje executar código em um aplicativo do MS Office que trabalhe com os objetos de um outro aplicativo.

É importantíssimo definir uma referência à biblioteca de tipos do outro aplicativo na caixa de diálogo Referências (menu Ferramentas). Logo após, os objetos, propriedades e métodos ficarão disponíveis no pesquisador de objetos e a sintaxe será verificada durante a compilação, além de pode obter ajuda contextual.

Declare as variáveis de objeto que se referirem aos objetos de outro aplicativo com tipos específicos.

Certifique-se de qualificar cada tipo com o nome do aplicativo que está fornecendo o objeto.


Por exemplo, abaixo a instrução declara uma variável que apontará para um documento do MS Word e uma outra que se referirá a uma pasta de trabalho do MS Excel:
Dim appWD As Word.Application, wbXL As Excel.Workbook
Obs: Precisa seguir os passos anteriores se desejar que seu código seja de acoplamento antecipado.

Use também a função CreateObject com Identificadores de programação OLE do objeto do outro aplicativo com o qual você deseja trabalhar. Caso deseje visualizar a sessão do outro aplicativo, defina a propriedade Visible como True.

Dim appWD As Word.Application

Set appWD = CreateObject("Word.Application")
appWd.Visible = True
Aplique propriedades e métodos ao objeto contido na variável.
[code]Dim appWD As Word.Application[/code]

Set appWD = CreateObject("Word.Application")
appWD.Documents.Add

Acima a instrução cria um novo documento do Word.

Ao terminar o trabalho com o outro aplicativo, use o método Quit para fechá-lo

appWd.Quit

André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

Um comentário:

  1. nirzaoCaro André,


    navegando pela WEB, deparei com seu site e vi que você é MOS, e peço sua ajuda
    para poder decifrar um problema que tenho.

    É o seguinte:

    no trabalho tenho um apresentação em ppt que recebe informações do excel, até ai
    tudo bem.
    só que como preciso salvar um arquivo com cada nome das pessoas envolvidas(uma
    apresentação pessoal para cada pessoa).
    então eu seleciono o nome da pessoa no excel e no ppt os vinculos são
    automatizados automaticamente.
    eu coloquei no ppt um textbox para receber o nome selecionado no excel, e a partir
    deste nome contido no textbox eu "salvo uma copia como" (savecopyas do vba),
    ficando o arquivo como "joão da silva.ppt"
    o cenário é o seguinte:
    eu tenho os dois arquivos abertos, ppt e xls, vou no excel e seleciono o nome da
    pessoa para qual desejo salvar o arquivo personalizado, vou para o ppt e rodo uma
    macro para atualizar o conteúdo do textbox e a partir daí salvo o arquivo com o
    nome da pessoa.
    no entanto não estou conseguindo fazer com que o textbox do ppt seja atualizado
    com o valor da célula do excel(que também está aberto).
    como tenho aproximadamente 250 pessoas, preciso de alguma forma automatizar o
    processo.
    a unica parte que falta e que não estou conseguindo fazer, é colocar o valor da
    célula no textbox.

    assim, imagino eu, preciso via VBA, "linkar" o textbox ao range e pegar seu
    conteúdo.

    abaixo segue o script que estou utilizando para atualizar o textbox, mas não está
    dando certo. poderia me ajudar, por favor?

    como o arquivo xls já está aberto, a linha de abertura do mesmo pode ser
    eliminada, porém como faço para ativar o xls para poder pegar o value da célula?

    Sub Atualiza_vinculo()

    Dim nome_gn As String
    Dim gerencia As String

    Workbooks.Open ("C:\Documents and
    Settings\Claudenir\Desktop\Telefonica\matriz.xls")

    Worksheets(1).Select

    gerencia = Range("D5").Value
    Slide25.TextBox1.Text = gerencia
    Slide25.TextBox1.Font.Bold = True

    nome_gn = Range("D3").Value
    Slide25.TextBox2.Text = nome_gn
    Slide25.TextBox2.Font.Bold = True

    'Excel.Workbooks.Close


    End Sub


    já procurei em vários foruns para achar uma solução mas nada que conseguisse
    resolver meu problema.

    Desde já, muito obrigado.

    Abs.

    ResponderExcluir

diHITT - Notícias