Jump to content
Fórum Script Brasil
  • 0

Integração Word Excel


Alex-jpa
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...