SUBSTITUIR TEXTOS DO WORD VIA FORM

 Tópico anterior Próximo tópico Novo tópico

SUBSTITUIR TEXTOS DO WORD VIA FORM

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#478337 - 07/12/2017 16:43:43

VBLOKO
SERGIPE
Cadast. em:Junho/2017


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.



#478342 - 07/12/2017 17:30:09

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
"Erro em algo" é meio vago. Que erro? Onde? O que você já tentou?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#478359 - 08/12/2017 22:10:56

VBLOKO
SERGIPE
Cadast. em:Junho/2017


Última edição em 08/12/2017 23:18:39 por VBLOKO

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:

  
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?  




#478363 - 09/12/2017 17:19:56

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


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

O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#478371 - 11/12/2017 08:34:03

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


macoratti tem um exemplo desses e uma vez q precisei, funcionou certinho
http://www.macoratti.net/vbwdrpt.htm



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário