DUVIDA - PREENCHER TABELA NO WORD

ALVAROVB2009 29/02/2012 09:24:32
#396007
Galera bom dia.
Tenho um doc no word q preciso preencher com os dados vindo do vb6, até ai blz, preencho sem problema algum.
O problema começa qdo tenho que preencher uma tabela, eu monto uma string já com o comando de pular a linha inserir chr(13), quando insiro isso fora da tabela, ele preenche corretamente, porém qdo mando para a tabela, não é respeitado o comando do enter, e não é acrescentado a linha a tabela
ex: 30/11/2009םם30/11/2009ם12/02/201ם16/03/2010ם13/04/2010ם

Porém se eu criar a tabela e ja deixar as linhas reservadas, ex tabela com 10 linhas, ao inserir o comando acima, ele respeita o enter.
Teria como fazer a tabela respeitar o enter e acrescentar a linha automaticamente, pois é um documento judicial e não quero que tenha o espaço de 10 linhas reservadas sendo que esta utilizando apenas uma, por exemplo.

E como isso será enviado para várias empresas, como uma mala direta, não será visualizado pelo usuário, será impresso direto, pois ficaria inviável o usuário ter que modificar várias cartas, tendo que tirar que excluir as linhas não utilizadas na tabela de cada documento, motivo o qual queria que fosse automática a inserção das linhas


Desde já agradeço a todos
ALVAROVB2009 29/02/2012 11:08:04
#396024
Alguém ....
MARCELO.TREZE 29/02/2012 12:00:15
#396032
Resposta escolhida
posta o código colega
ALVAROVB2009 29/02/2012 12:30:32
#396040
Marcelo obrigado pelo retorno

Esse é o mesmo código q vc me ajudou a outra vez, com a incompatibilidade de versão

Private Sub PreencheDocumento()
Call Substitui_Var([Ô]@Data[Ô], Format(Date, [Ô]Long Date[Ô]), ObjWord)
Call Substitui_Var([Ô]@Empresa[Ô], Empresa, ObjWord)
Call Substitui_Var([Ô]@Emissao[Ô], Emissao, ObjWord)
Call Substitui_Var([Ô]@Venc[Ô], Vencimento, ObjWord)
Call Substitui_Var([Ô]@Valor[Ô], Valor, ObjWord)
Call Substitui_Var([Ô]@NossoNumero[Ô], nossoNumero, ObjWord)
Call Substitui_Var([Ô]@Compet[Ô], Competencia, ObjWord)
Call Substitui_Var([Ô]@Boleto[Ô], Boleto, ObjWord)
ObjWord.DisplayAlerts = wdAlertsNone
ObjWord.ActiveDocument.SaveAs (App.Path + [Ô]\[Ô] & RTrim(Empresa) & [Ô].doc[Ô])
ObjWord.PrintOut
ObjWord.Documents.Close
Kill App.Path + [Ô]\[Ô] & RTrim(Empresa) & [Ô].doc[Ô]
Empresa = [Ô][Ô]
Emissao = [Ô][Ô]
Vencimento = [Ô][Ô]
Valor = [Ô][Ô]
nossoNumero = [Ô][Ô]
Competencia = [Ô][Ô]
Boleto = [Ô][Ô]
End Sub

Private Sub Substitui_Var(Header As String, data As String, OWord As Object)
On Error Resume Next
With OWord.Selection.Find
.ClearFormatting
.Text = Header
.Execute Forward:=True
End With
Clipboard.Clear
Clipboard.SetText (data)
OWord.Selection.Paste
Clipboard.Clear
End Sub

Botão imprimir
ObjWord.Visible = True [ô]torna o word visível
[ô] nome do relatorio pré montado
ObjWord.Documents.Open CaminhoDocumento

Do While Not Rs.EOF
[ô]nova empresa e demonstrativos da empresa anterior
If Empresa <> Rs!nomeempr And Trim(Emissao) <> [Ô][Ô] Then
PreencheDocumento
ObjWord.Documents.Open CaminhoDocumento
Exit Do
ElseIf Empresa = Rs!nomeempr Or Trim(Empresa) = [Ô][Ô] Then
Empresa = Rs!nomeempr
Emissao = Emissao & Format(Rs!dtEmissao, [Ô]DD/MM/YYYY[Ô]) & Chr(13)
nossoNumero = nossoNumero & Rs!nossoNumero & Chr(13)
If OptDemaisGuias.Value = True Then
Vencimento = Vencimento & Format(Rs!DtVencimento, [Ô]DD/MM/YYYY[Ô]) & Chr(13)
Valor = Valor & Format(Rs!Valor, [Ô]###,###,##0.00[Ô]) & Chr(13)
Competencia = Competencia & Rs!Competencia & Chr(13)
Boleto = Boleto & IIf(Rs!Associativo, [Ô]Associativo[Ô], IIf(Rs!Social, [Ô]Social[Ô], [Ô]Assistêncial[Ô])) & Chr(13)
Else
Vencimento = Vencimento & Format(Rs!Vencimento, [Ô]DD/MM/YYYY[Ô]) & Chr(13)
Valor = Valor & Format(Rs!vlContribuicao, [Ô]###,###,##0.00[Ô]) & Chr(13)
Competencia = Competencia & Rs!Exercicio & Chr(13)
Boleto = Boleto & [Ô]Sindical[Ô] & Chr(13)
End If
Rs.MoveNext
End If
Loop
MARCELO.TREZE 29/02/2012 12:40:22
#396045
chr(13) não 'codigo para simular a tecla enter, ele apenas indica proxima linha, ou seja ficara um dado abaixo do outro sem mudar de tabela, mas vai ai uma sugestão

abra um documento do word vá até macro e clique em gravar nova macro.

agora crie a tabela da maneira que deseja incluindo alguns dados e dando o enter para se criar nova linha.

depois vá em macros novamente e pare a gravação, clique em exibir macros, selecione a macro que gravou e clique em editar.

lá está todo código que necessita.

ALVAROVB2009 29/02/2012 12:51:33
#396048
Marcelo obrigado pela dica, más apenas para completar.
A intensão é mesmo que ele fique com os dados um embaixo do outro, pois montei uma tabela no word e cada coluna esta representada pelo @nomedocampo, nisso o vb localiza e substitui pelos dados que estou enviado, não mudo de coluna ou tabela, eles já estão devidamente posicionado.
Por isso q coloquei o chr(13), para ficar um dado embaixo do outro mesmo, más como comentei ele não cria a linha, fica td em uma linha só.

Más vou fazer isso q vc falou, e vou ver qual é o comando para add uma linha, qm sabe consigo ajustar
MARCELO.TREZE 29/02/2012 12:54:14
#396049
tente as seguintes alterações

no lugar de chr(13)

chr(10) + chr(13)

ou

VbCrLf

ou VbEnter

ALVAROVB2009 29/02/2012 13:07:13
#396050
Vlw Marcelo
Eu troquei o chr(13) apenas pelo chr(10), ele criou a linha na coluna q eu estava querendo
Tópico encerrado , respostas não são mais permitidas