CRIAR MACRO NO WORD VIA VB NET

JCM0867 05/11/2014 10:31:30
#442296
Olá pessoal

preciso criar a seguinte Macro No Word Via Programação no VB NET, como faço?

[txt-color=#0000f0]Sub MesclarDados()
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
Application.WindowState = wdWindowStateMaximize
End Sub[/txt-color]

Chamar a Macro [Ô]MesclarDados[Ô] no VB net sem problema

eu até poderia executar diretamente a Macro no VBNET assim:
Word.ActiveDocument.MailMerge.ViewMailMergeFieldCodes = [txt-color=#e80000]wdToggle[/txt-color]
Word.Application.WindowState = [txt-color=#e80000]wdWindowStateMaximize[/txt-color]

Só que o vbNet não reconhece o que está em vermelho, o VB6 reconhece

Também fiz assim:
Word.ActiveDocument.MailMerge.ViewMailMergeFieldCodes = Word.wdToggle
Word.Application.WindowState = Word.wdWindowStateMaximize
Reconhece mas não executa

Como posso fazer, Chamo uma macro, mas preciso cria-la ou Como faço essa rotina acima funcionar direto no VB NET
Eu tb poderia criar a macro diretamente no Word, só que não é ideal pois possuo dezenas de clientes com outras dezenas de pcs

Grato
JCM0867 07/11/2014 09:29:46
#442350
Nenhuma dica?

Grato
TUNUSAT 07/11/2014 13:30:43
#442359
Resposta escolhida
JCM0867,

Copiei do seguinte exemplo:
http://www.java2s.com/Tutorial/VB/0440__Windows/EditWorddocument.htm

Estou testando aqui e funcionou destas formas (crie um arquivo [Ô]C:\Temp\Sample.doc[Ô]):
        objWordApp.WindowState = Word.WdWindowState.wdWindowStateMaximize
objWordApp.Application.WindowState = Word.WdWindowState.wdWindowStateMaximize


A minha Sub completa:

    Private Sub frmTeste_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim objWordApp As Word.Application
Dim objDoc As Word.Document

objWordApp = New Word.Application

[ô]Show the Word application window if checked.
objWordApp.Visible = True
[ô]objWordApp.WindowState = Word.WdWindowState.wdWindowStateMaximize
objWordApp.Application.WindowState = Word.WdWindowState.wdWindowStateMaximize

[ô]Open an existing document.
objWordApp.Documents.Open([Ô]C:\Temp\Sample.doc[Ô])
objDoc = objWordApp.ActiveDocument

objWordApp.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
objWordApp.Quit()
objWordApp = Nothing
End Sub


Agora sobre a [Ô]Propriedade MailMerge.ViewMailMergeFieldCodes (Word)[Ô]:
http://msdn.microsoft.com/pt-br/library/office/ff840472(v=office.15).aspx

Pelo que entendi, só funciona se for [Ô]Mala Direta[Ô].

[][ô]s,
Tunusat.
JCM0867 08/11/2014 10:27:52
#442371
Sim, é mala direta, na verdade é um contrato que funciona da mesma maneira

Acontece o seguinte
ao abrir o docContrato ele não exibe os campos mesclados
aparecem: «NomeResponsavel», «EnderecoResponsavel», etc. ao inves de mostrar os dados dos respectivos campos,
Ai sempre tem que clicar no comando [txt-color=#0000f0]Visualizar resultados[/txt-color] do word, ele não fixa esse comando,
A cada abertura do contrato tem de clicar em [txt-color=#0000f0]Visualizar resultado[/txt-color] e sabe como é o cliente, quer tudo mastigadinho.
o comando VBA para executar a mesclagem é [txt-color=#e80000]Word.ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle[/txt-color]
Funciona exatamente dessa maneira no VB6 e não funciona no VB net

Outra maneira que tb resolveria seiria fixar o [txt-color=#0000f0]Visualizar resultados[/txt-color] do word com habilitado, mas não descobri como fazer isso.
O Word insiste em deixa-lo Desabilitado
JCM0867 08/11/2014 11:43:18
#442373
Não consegui fazer funcionar o exemplo do MSDN

Mas dando mais uma pesquisada achei num forum alguem que tinha a mesma dúvida e responderam
[txt-color=#0000f0]ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False[/txt-color]

Coloquei no meu sistema:
Word.ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False e funcionou 100%
agora ele mescla e abre o valor nos campos mesclados

Agora não é mais necessário criar uma macro no Word

Valeu
Tópico encerrado , respostas não são mais permitidas