INTEGRA?ÃO VB.NET COM MICROSOFT WORD

DUMMIES 23/01/2015 11:39:23
#443974
Prezados.
Estou fazendo um programa em VB.Net usando VS2012.
O objetivo é editar um documento do word, para isso fiz algumas pesquisas e vi vários exemplos no qual me baseei num desses para fazer meu programa.
Meu problema ocorre quando mando dar um replace de uma variável (que está no documento) e ela existe mais de uma vez nesse arquivo.
Depois que o sistema passa por ela ele não consegue dar replace de mais nada que esteja antes dessa variável.
Vou exemplificar para facilitar:

No word:
Vaviavel_1 = @var1
Vaviavel_2 = @var2
Vaviavel_3 = @var3
Vaviavel_4 = @var4
Vaviavel_2 = @var2

Observe acima que a @var2 está em duas posições diferentes em meu documento word.
Veja o meu programa abaixo:

sReplace([Ô]@var1[Ô], [Ô]Luiz Fernando Veríssimo[Ô])
sReplace([Ô]@var2[Ô], [Ô]Fernando Pessoa[Ô])
sReplace([Ô]@var3[Ô], [Ô]Machado de Assis[Ô])
sReplace([Ô]@var4[Ô], [Ô]Leonel Brizola[Ô])

Onde sReplace é uma sub que faz a substituição das variáveis

Veja a sub:

Private Sub sReplace(ByVal Procurar As String, ByVal Substituir As String)
With objWord.Selection.Find
.ClearFormatting()
.Replacement.ClearFormatting()
.Text = Procurar.ToString
.Replacement.Text = Substituir.ToString
.Forward = True
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With

While objWord.Selection.Find.Execute = True
objWord.Selection.Select()
System.Windows.Forms.Clipboard.SetDataObject(Substituir)
objWord.Selection.Paste()
End While
End Sub

Veja o resultado no word depois de executado:

No word:
Vaviavel_1 = Luiz Fernando Veríssimo
Vaviavel_2 = Fernando Pessoa
Vaviavel_3 = @var3
Vaviavel_4 = @var4
Vaviavel_2 = Fernando Pessoa

Observe que as variáveis @var3 e @var4 não são localizadas, isso porque depois que o sistema encontrou a @var2 e ele não retorna o ponteiro da pesquisa no inicio.
O resultado correto deveria ser esse:

Vaviavel_1 = Luiz Fernando Veríssimo
Vaviavel_2 = Fernando Pessoa
Vaviavel_3 = Machado de Assis
Vaviavel_4 = Leonel Brizola
Vaviavel_2 = Fernando Pessoa

Alguém pode me ajudar?
Em caso de dúvidas me deem um retorno por favor.
Agradeço antecipadamente.


NICKOSOFT 23/01/2015 18:35:09
#443978
Resposta escolhida
Campos repetidos nunca usei, mas de forma simples e normal esse artigo me resolveu
http://www.macoratti.net/11/09/vbn_wds1.htm
DUMMIES 24/01/2015 19:49:03
#443995
Nickosoft.
Obrigado pelo retorno.
A forma que você mostrou é praticamente como já faça com pequenas diferenças, mas veja que no exemplo do Macoratti não existe variáveis repetidas no documento, ou seja funciona perfeitamente.
Hoje o meu programa também funciona bem desde que não tenha variáveis repetidas.
NICKOSOFT 25/01/2015 06:22:22
#444005
Melhor usar um report no seu projeto entao, depende como for o caso seria uma otima solucao
A vez q usei o word integrado nao tinha repeticao tmb, usei como no exemplo, ou se for o caso dar um segundo nome a variavel repetida, e atribuir o mesmo valor no vb, nao fica elegante mas resolveria
DUMMIES 26/01/2015 18:54:23
#444043
Nickosoft.
Vou optar pela forma deselegante mesmo...rsrsr
Alterar o nome da mesma variável dentro do DOC assim não terei problemas.
Valeu pela força.
Tópico encerrado , respostas não são mais permitidas