Ir para conteúdo
Fórum Script Brasil
  • 0

Integração Word Excel


Alex-jpa

Pergunta

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

  • 0

Alex

o seu problema está aqui

Private Sub Substitui_Var(Header As String, Data As String)

Set objWord = New Word.Application

objWord.Documents.Open ("c:\vba\contrato.doc")

Toda vez que ele chamar Substitui_Var, ele abrirá uma cópia do arquivo Contrato.doc

o que eu acho que te ajudaria, é declarar objWord como pública e retirar as duas primeiras linhas da sub Substitui_VAR.

o que aconteceria, no momento que você clicar no botão, ele abriria o arquivo contrato uma vez vinculando as infos com a variavel "objWord". Quando você chamasse a sub Substiruir_Var, ele usaria as propriedades da variavel para substituir o texto

Não sei se você me entendeu, mas qualquer coisa posta ai...

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...