Olá Galera Estou precisando muito da ajuda de vocês. Criei uma plaicação em VBA no excel juntamente com um banco de dados. Ao clicar no botão de gerar contrato, os dados são jogados para um arquivo de contrato no word, que possui vairiávies @variável. Eu consegui fazer só que não consigo fazer com que as variáveis chamem um só documento, ou melhor, alterem em umn documento. Quando eu coloco mais de uma variável ele abre vários documentos de acordo com o número de variáveis. Veja o código Private Sub cmdContrato_Click() Dim temp As String 'On Error GoTo trata_erro Set objWord = New Word.Application ' Desabilita o botao de comando cmdContrato.Enabled = False ' nome do relatorio pré montado objWord.Documents.Open ("c:\vba\contrato.doc") Dim txtcontratada2 As String Dim txtcontratada1 As String txtcontratada2 = "TESTE1" txtcontratada1 = "TESTE2" ' chama rotina para substituicao Call Substitui_Var("@contratada1", txtcontratada2) Call Substitui_Var("@contratada2", txtcontratada1) ' Salva o documento com um novo nome objWord.ActiveDocument.SaveAs (txtcontratada2) 'Encerra o word objWord.Quit ' informa ao usuario que o contrato foi gerado MsgBox "Contrato gerado com sucesso! em : " & txtcontratada2, vbInformation, " Contrato Gerado " ' libera memoria Set objWord = Nothing Exit Sub trata_erro: MsgBox "Ocorreu um erro durante o processamento " & " - Erro numero : " & Err.Number End Sub Private Sub Substitui_Var(Header As String, Data As String) Set objWord = New Word.Application objWord.Documents.Open ("c:\vba\contrato.doc") With objWord.Selection.Find .ClearFormatting .text = Header .Execute Forward:=True End With Set MyData = New DataObject MyData.SetText (Data) MyData.PutInClipboard objWord.Selection.Paste 'Clipboard.Clear 'Clipboard.SetText (Data) 'Clipboard.Clear End Sub Obrigado Alex