Vídeo recomendado
https://youtu.be/diWPPPhW-9E

excel vba e word

Esclarecimentos e dúvidas sob o Modelo de Aplicativo de Cadastro em VBA no Microsoft Excel publicado no site e blog http://www.tomasvasquez.com.br
dannythex
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qui Abr 09, 2015 9:55 pm

excel vba e word

Mensagem por dannythex »

Boa noite, queridos. Construi um banco de dados no Excel que é alimentado por uma useform, especificamente um cadastro de clientes. No microsoft Word tenho um documento que usa alguns dos dados do banco de dados (ficha cadastral que é impressa), gostaria de saber como faço para que alguns dados do banco preecham os campos, tipo colocar um botão gerar ficha cadastral no meu form e ele abrir o documento do Word já preenchido com os dados selecionados, tipo nome; endereço etc. Atualmente uso o recurso de mala direta para fazer isso, diretamente no word, onde indico o número do cliente e ele gera uma nova carta, mas gostaria que isso se fizesse diretamento do meu form.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: excel vba e word

Mensagem por joseA »

Uma solução bem simples seria o colar especial com vinculo. Mas tem outras soluções mais elaboradas.
Mostra um exemplinho.


Marcos Filho
Acabou de chegar
Acabou de chegar
Mensagens: 8
Registrado em: Qua Abr 08, 2015 8:04 pm

Re: excel vba e word

Mensagem por Marcos Filho »

OLá Danny,
Tudo bem com você?

Com base no que você falou criei uma aplicação muito simples, mas que pode lhe dar alguma luz.

Ao invés de trocar o texto do Word, eu inserir labels no arquivo Word e troco o Caption dessas labels.
Basta abrir o arquivo Excel, rodar a macro e você verá que surgiram os arquivos na pasta com os dados alterados.
Teste.rar
(30.14 KiB) Baixado 1091 vezes
Qualquer dúvida estou a disposição,
Abraços

http://www.excelparaestagiarios.com.br


dannythex
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qui Abr 09, 2015 9:55 pm

Re: excel vba e word

Mensagem por dannythex »

Obrigado pela atenção e as soluções são bem interessantes. Mas eu fiz o seguinte mantive o meu documento base no word "fichacadastral" nele vinculei a lista do arquivo do excel como mala direta. No form VBA coloque o seguinte botão "gerar ficha cadastral" e inseri o seguinte código: (que deu erro no local indicado)

Private Sub botão_ficha_Click()
Dim wd As Object
Dim wdocSource As Object
Dim strWorkbookName As String

On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
End If
On Error GoTo 0

Set wdocSource = wd.Documents.Open("C:\Users\Daniel\Documents\ficha.docx")

strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name

wdocSource.MailMerge.MainDocumentType = wdFormLetters


o erro ocorre aqui - wdocSource.MailMerge.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:="SELECT * FROM `_registros_$`"

With wdocSource.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With

wd.Visible = True
wdocSource.Close SaveChanges:=False

Set wdocSource = Nothing
Set wd = Nothing
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


dannythex
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qui Abr 09, 2015 9:55 pm

Re: excel vba e word

Mensagem por dannythex »

Bom dia e obrigado a todos que me deram uma resposta. Solucionei integralmente meu problema, a seguir vou passar um resumo para quem queria saber da solução.
Tenho os seguintes componentes: um useform que alimenta uma planilha no excel que contém duas folhas- _registros_ e uma segunda; uma séria de documentos que eram preenchidos com os dados dessa planilha _registros_ (campos: nº cliente, nome, etc). No word, usando o recurso mala direta, usei como fonte de dados a minha planilha, em seguida inseri os campos a serem mesclados (tudo com os comandos da mala direta do word mesmo), assim um comando SQL foi inserido no meu arquivo do word (tipo - ficha cadastral é um deles), em seguida criei no forma um botão com o nome do documento a ser preenchido; no meu projeto VBA Excel fui em ferramenta\suplementos e selecionei microsoft word 14.0 object library; no documento do word (ex. ficha cadastral) também na tela do VBA ferramenta\suplementos e selecionei microsoft excel 14.0 object library (nenhum outro código é digitado no VBA do Word). Depois foi só programar o botão ficha cadastral com o seguinte código:

Private Sub botão_fichacadastral_Click()
' o form deve estar exibindo um cliente, no caso indico o número e os dados são preenchidos no form para conferir a quem será gerado a ficha, se estiver em branco ele sai da rotina com a mensagem
If txt_a_numerocliente = "" Then
MsgBox "você deve selecionar um cliente para emitir a cadastral"
Else

'o código para mesclar começa mesmo aqui

Dim wd As Object
Dim wdocSource As Object
Dim strWorkbookName As String

On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
End If
On Error GoTo 0

Set wdocSource = wd.Documents.Open("D:\ESCRITÓRIO\ficha cadastral.docx")

strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name

wdocSource.MailMerge.MainDocumentType = wdFormLetters

wdocSource.MailMerge.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:="SELECT * FROM `_registros_$`"

With wdocSource.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource

' aqui eu limito para quem será gerada a ficha, no caso somente para o cliente selecionado, pois, do contrário ele sempre gerará para todos os clientes da planilha

.FirstRecord = txt_a_numerocliente ' este é o nome da textbox onde fica o número do cliente
.LastRecord = txt_a_numerocliente

'' .FirstRecord = wdDefaultFirstRecord
' .LastRecord = wdDefaultLastRecord

End With
.Execute Pause:=False
End With

wd.Visible = True
wdocSource.Close SaveChanges:=False

Set wdocSource = Nothing
Set wd = Nothing
End If
End Sub

O resultado é ótimo, tenho um programa com interface própria, e posso preencher vários documentos padrões em um click, no meu caso entre 4 e 8 docs, dependo do caso. Os documentos bases nunca perdem a vinculção SQL, pois, são fechados assim que o documento preenchido é aberto. Ufa!!!!

Ai vocês vão dizer que eu mesmo perguntei e eu mesmo respondi, rs. Sim. Afinal eu achei que ia ser um bicho de 7 cabeças fazer isso, mas foi muito fácil, logo resolvi compartilhar.


Jefferson Inácio
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Sex Set 25, 2015 2:04 am

Re: excel vba e word

Mensagem por Jefferson Inácio »

Boa noite danny.

Olha, eu tenho o mesmo problema que você e parece que conseguiu resolver o seu!
Teria como me ajudar com o meu problema?

Tentei utilizar o seu código na minha planilha que também tem a função de abrir uma macro no Word, e selecionar o cliente que eu escolhi dentro do sistema do Excel, porém, ele abre o word depois que clico no botão abrir, apenas depois que eu vou para uma janela para selecionar a Tabela e então, depois de selecionar, ele abre o Word mas dá erro aqui:

wdocSource.MailMerge.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:="SELECT * FROM `_registros_$`"

No mesmo lugar que dava no seu, dizendo que o Word não pode abrira fonte de dados.
Consegue me ajudar?


PowerByte
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Dom Set 25, 2016 4:42 pm

Re: excel vba e word

Mensagem por PowerByte »

Olá Dannythex!
Poderia enviar um exemplo de como ficou o seu modelo final?

Abs

Helio


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder