LEVAR VALORES PARA UMA MACRO DO WORD

JCM0867 01/07/2015 20:39:29
#448394
Olá pessoal
Tenho sistema que chama um documento Word levando junto vários campos de mesclagem para gerar um contrato, até aí tudo bem
só que dentro do Word quero rodar uma Macro que pegue um dos campos da mesclagem (campos de mesclagem: Nome, Endereço, Telefone, etc).

Por exemplo na minha macro tem um linha:
Campo de mesclagem Nome = [Ô]Júlio Cesar Moraes[Ô]
...
[txt-color=#0000f0]ActiveDocument.SaveAs FileName:=[/txt-color][txt-color=#e80000]?????[/txt-color]
...
gostaria que o [txt-color=#e80000]?????[/txt-color] fosse colocado o campo de mesclagem [ô]Nome[ô]
em tempo de execução ficaria
[txt-color=#0000f0]ActiveDocument.SaveAs FileName:=[/txt-color][txt-color=#e80000][ô]Júlio Cesar Moraes[ô][/txt-color]

Preciso fazer isso dentro do Word e não em linhas de códigos dentro vb net.
DS2T 02/07/2015 00:29:58
#448397
Resposta escolhida
Não sei se entendi bem.
Se você quer apenas pegar parte do seu texto no Word e jogar para uma variável via VBA, segue exemplo:

Private Sub Document_Open()
MsgBox ActiveDocument.Range(0, 4).Text
End Sub


Nesse exemplo, toda vez que seu documento abrir (evento Open) ele vai aparecer uma mensagem com os 4 primeiros caracteres do documento. Para selecionar o que quer, basta colocar o índice no lugar do 0 e do 4 (Count).
A forma como você vai usar, vai depender exclusivamente do formato do seu documento. Talvez você tenha que usar um Instr pra ajudar a localizar o texto.

Abraços!
JCM0867 02/07/2015 12:35:36
#448413
é quase isso, só que o documento é uma mala direta e eu queria pegar um dos campos que ele mesclou do VB
Por ex, ele mesclou o Nome, endereço, CEP, Cpf, telefone, etc
E eu queria pegar o Nome e referencia-lo na Macro onde está o ????? abaixo
e colocar na linha ActiveDocument.SaveAs FileName:=?????
DS2T 02/07/2015 15:32:15
#448422
Use isso:

activedocument.MailMerge.DataSource.DataFields([Ô]NomeDoCampo[Ô]).Value

Isso deverá retornar o valor.

Abraços!
JCM0867 02/07/2015 20:03:35
#448428
Agora deu certo
Estava fazendo errado, veja a macro

[txt-color=#e80000]Errado:
Sub SalvarAluno()
With ActiveDocument.MailMerge
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With

ChangeFileOpenDirectory [Ô]C:\Cesc40\ContratosSalvos[Ô]
ActiveDocument.SaveAs FileName:=ActiveDocument.MailMerge.DataSource.DataFields([Ô]NomeAluno[Ô]).Value
End Sub[/txt-color]

[txt-color=#0000f0]Certo:
Sub SalvarAluno()
Dim Campo As String
Campo = (ActiveDocument.MailMerge.DataSource.DataFields([Ô]NomeAluno[Ô]).Value)

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

ChangeFileOpenDirectory [Ô]C:\Cesc40\ContratosSalvos[Ô]
ActiveDocument.SaveAs FileName:=(Campo)
End Sub[/txt-color]

Esses comandos acima são para fazer a mala direta virar texto Word Normal

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