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.
Pergunta
Alex-jpa
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
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.