SUBSTITUIR TEXTOS DO WORD VIA FORM
Olá, pessoal. Bem, estou iniciando com o vb e gostaria de saber como eu devo fazer para:
- A partir de um modelo do word já existente, substituir campos especÃficos como [Ô]nome[Ô], [Ô]data[Ô], entre outros, por aqueles digitados em textboxes ou escolhidos em comboboxes (apenas como exemplos)
Isso seria basicamente para automatizar e não ser necessário apagar os dados anteriores e digitar os novos dados no word para cada pessoa. Procurei por alguns tutoriais, mas realmente não estou conseguindo prosseguir, sempre dá um erro em algo. Alguém teria como ajudar? Desde já, agradeço.
- A partir de um modelo do word já existente, substituir campos especÃficos como [Ô]nome[Ô], [Ô]data[Ô], entre outros, por aqueles digitados em textboxes ou escolhidos em comboboxes (apenas como exemplos)
Isso seria basicamente para automatizar e não ser necessário apagar os dados anteriores e digitar os novos dados no word para cada pessoa. Procurei por alguns tutoriais, mas realmente não estou conseguindo prosseguir, sempre dá um erro em algo. Alguém teria como ajudar? Desde já, agradeço.
[Ô]Erro em algo[Ô] é meio vago. Que erro? Onde? O que você já tentou?
Olá, Kerplunk, obrigado por responder e desculpe-me pela demora em responder.
Após inserir a referência do Word ao projeto, eu consegui fazer da seguinte forma:
No entanto, surgiu um problema. Coloquei para exemplificar três mudanças com o LocalizaAltera, mas no meu código ocorrerão mais substituições. O que acontece é que somente o primeiro campo @ASSOCIADO é substituÃdo e, algumas vezes, o último campo do @PREÇO, ou seja, parece não estar percorrendo todo o documento porque algumas palavras não são substituÃdas e as que são substituÃdas, são substituÃdas somente uma vez. Alguém saberia a causa deste problema?
Após inserir a referência do Word ao projeto, eu consegui fazer da seguinte forma:
Dim wrdApp As Word.Application
Private Sub LocalizaAltera(ByVal Procurar As String, ByVal Substituir As String)
With wrdApp.Selection.Find
.Text = Procurar.ToString
.Replacement.Text = Substituir.ToString
.Forward = True
.Format = False
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
While .Execute = True
wrdApp.Selection.Select()
System.Windows.Forms.Clipboard.SetDataObject(Substituir)
wrdApp.Selection.Paste()
End While
End With
End Sub
Private Sub btnConfirmar_Click(sender As Object, e As EventArgs) Handles btnConfirmar.Click
wrdApp = CreateObject([Ô]Word.Application[Ô])
Dim path As String = LeArquivoINI(nome_arquivo_ini, [Ô]Config[Ô], [Ô]CAMINHO_RECIBO[Ô], [Ô][Ô])
wrdApp.Documents.Open(path)
wrdApp.Visible = False
LocalizaAltera([Ô]@ASSOCIADO[Ô], txtNome.Text)
LocalizaAltera([Ô]@PREÇO[Ô], txtPreco.Text)
LocalizaAltera([Ô]@SECRETÃRIO[Ô], LeArquivoINI(nome_arquivo_ini, [Ô]Config[Ô], [Ô]SECRETARIO[Ô], [Ô][Ô]))
End Sub
No entanto, surgiu um problema. Coloquei para exemplificar três mudanças com o LocalizaAltera, mas no meu código ocorrerão mais substituições. O que acontece é que somente o primeiro campo @ASSOCIADO é substituÃdo e, algumas vezes, o último campo do @PREÇO, ou seja, parece não estar percorrendo todo o documento porque algumas palavras não são substituÃdas e as que são substituÃdas, são substituÃdas somente uma vez. Alguém saberia a causa deste problema?
Aqui no VBMania tem exemplos de como trabalhar com o WORD
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9404
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=442296&pagina=1
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9404
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=442296&pagina=1
macoratti tem um exemplo desses e uma vez q precisei, funcionou certinho
http://www.macoratti.net/vbwdrpt.htm
http://www.macoratti.net/vbwdrpt.htm
Tópico encerrado , respostas não são mais permitidas