Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Impressão de Contratos Word

Produto:

Microsiga Protheus

Ocorrência:

Procedimentos para Impressão de Contratos via Word.

Ambiente:

Protheus - Originação de Grãos - Versão 12.1.17P12

Passo a passo:

Exemplo realizado com Contrato de Venda (OGA290).

1 - Acessar Gestão de Agronegócio > Atualização >> Originação >>> Controle de Vendas >>>> Contrato de Venda (OGA290).

Ir em Outras Ações > Mais ações... >> Imprimir Word. Será apresentada a janela de impressão do word.


Na janela de impressão word, possui as opções: Parâmetros, Impr. Variáveis e Impr. Documento.

  1. Parâmetros: informar o local do arquivo word, informar o local para salvar a impressão e se caso a opção permite execução de macros, informar qual a macro ser executada.
  2. Impr. Variáveis: imprime em lista as variáveis disponíveis para configuração do documento word para a impressão. Lista de variáveis baseada na tabela NJR - Contratos (Modelo Clássico).
  3. Impr. Documento: realiza a impressão do documento word conforme sua configuração.





2 - Criar documento word para a impressão.

Para que seja possível a impressão do documento é necessário informar as variáveis para cada informação desejada.

Criar um campo do tipo DocVariable: no word ir em "Inserir > Partes Rápidas >> Campo."


Incluir as variáveis conforme o modelo do documento word a ser criado.


Para visualizar as variáveis no documento word, é necessário selecionar o documento por completo, clicar com o botão direito do mouse e clicar na opção "Alternar códigos de campo".


3 - Criar Macros no documento.

No inicio do documento é de extrema importância criar as variáveis cParam01 e cParam02.

Exemplo:



Essas variáveis controlam as macros no word, identificando conteúdo e quantidade de linhas para a criação de tabela.

  • A variável cParam01 controla conteúdo para a tabela.
  • A variável cParam02 controla quantidade de linhas para a tabela.

As variáveis de controle devem ser criadas no inicio do documento word, como padrão, possui tamanho igual a 1 (um) e com cor da folha utilizada.


Imagem Ilustrativa - Texto destacado pode ter tamanho de letra menor.Image RemovedImage Added


Após a criação das variáveis de controle, devemos criar as macros que serão utilizadas.

Criar as seções para cada macro, pois as seções são responsáveis para a impressão das tabelas. Conforme exemplo da imagem abaixo.

Image Removed

Segue as macros para a impressão das tabelas, as mesmas devem estar criadas no documento word que será impresso.


Bloco de código
Expandir
languagevb
titleMacros Word
linenumberstrue
Sub Atualiza()


    ActiveDocument.Fields.Update            ' Atualiza os campos do documento


    Selection.WholeStory


    Selection.Fields.ToggleShowCodes        'Mostra conteudo var doc


    Selection.HomeKey Unit:=wdStory         'Posiciona o cursor até o inicio do documento


    Application.WindowState = wdWindowStateMaximize  'Maximiza janela do word


End Sub


'PARA NÃO UTILIZAR A MACRO DEVE SER CRIADA A FUNCAO COM O NOME DA MACRO VAZIA


'POIS O EXECMACRO NAO RETORNA SE EXISTE OU NAO


Sub SEMMACRO()  'COLOCAR O NOME DA MACRO


   'MACROS EXISTENTES


   'TABFINAN = ABA FINANCEIRO
NN7
   NN7
   'TABCADEN = ABA CADENCIA
NNY
     NNY
   'TABCREDI = ABA CESSAO DE CREDITO NNG


   'TABCORRE = ABA CORRETORAS   NNF


End Sub


'REALIZA A IMPRESSAO DA TABELA FINANCEIRA DO CONTRATO NN7


Sub TABFINAN()


    'Variaveis de controle


    Dim nPos As Integer


    Dim cMemo As String


    Dim cText As String


    Dim nContador As Integer


    Dim lEof As Boolean


    Dim nLin As Integer


    Dim nCol As Integer


    Dim nReg As
Integer
 Integer
    
    ActiveDocument.ActiveWindow.View.FieldShading =
_
wdFieldShadingWhenSelected
'Conta a variavel cMemo que retorna da rotina OGRR342
nContador =
 _
                   wdFieldShadingWhenSelected
    
    'Conta a variavel cMemo que retorna da rotina OGRR342
    nContador = ActiveDocument.Fields.Count


    If nContador >= 1
Then
With
 Then
            With ActiveDocument.Fields(1)

.Update
cMemo =

                .Update
                cMemo = Trim(.Result.Text)


                .Result.Text =
""
End With
With
 ""
            End With
            With ActiveDocument.Fields(2)

.Update
nReg =

                .Update
                nReg = Val(Trim(.Result.Text))


                .Result.Text = ""

End With
End If
'Informa que será impresso na seção 2

            End With
    End If
    
    'Informa que será impresso na seção 2 [Count:=2]


    Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=2, Name:=""


    Selection.Find.ClearFormatting


    With Selection.Find


        .Text = "/"

.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
'Criando a tabela
Set myTable = _

        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    
    'Criando a tabela
    Set myTable = _
    ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=nReg,
_
 _
        NumColumns:=8)


        
    myTable.AutoFormat Format:=wdTableFormatProfessional,
_
 _
        ApplyBorders:=True, ApplyShading:=True, ApplyFont:=False, ApplyColor:=True
_
,
 _
        , ApplyHeadingRows:=False, ApplyLastRow:=False, ApplyFirstColumn:=False,
_
 _
        ApplyLastColumn:=False, AutoFit:=True


  
    
    'alinha o texto ao meio horizontal e vertical


    myTable.Select


        Selection.Cells.VerticalAlignment =
wdCellAlignVerticalCenter
'a soma InchesToPoints não devem passar 6.6 - AJUSTA O TAMANHO DAS COLUNAS
 wdCellAlignVerticalCenter
    
    'a soma InchesToPoints não devem passar 6.6     - AJUSTA O TAMANHO DAS COLUNAS
    myTable.Columns(1).Width = InchesToPoints(0.5)


    myTable.Columns(2).Width = InchesToPoints(0.8)


    myTable.Columns(3).Width = InchesToPoints(1.1)


    myTable.Columns(4).Width = InchesToPoints(0.7)


    myTable.Columns(5).Width = InchesToPoints(0.8)


    myTable.Columns(6).Width = InchesToPoints(0.4)


    myTable.Columns(7).Width = InchesToPoints(1)


    myTable.Columns(8).Width = InchesToPoints(0.4)


    
    'cabeçalho da tabela - DEVE SER IMPRESSO TODAS AS COLUNAS AQUI DESCRITAS


    myTable.Columns(1).Cells(1).Range.Text = "PARC"


    myTable.Columns(2).Cells(1).Range.Text = "VENCTO"


    myTable.Columns(3).Cells(1).Range.Text = "VALOR"


    myTable.Columns(4).Cells(1).Range.Text = "BANCO"


    myTable.Columns(5).Cells(1).Range.Text = "AGENCIA"


    myTable.Columns(6).Cells(1).Range.Text = "DG"


    myTable.Columns(7).Cells(1).Range.Text = "CONTA"


    myTable.Columns(8).Cells(1).Range.Text = "DG"


                   
    'Alinha o conteudo das linhas e colunas


    myTable.Columns(1).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(2).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(3).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight


    myTable.Columns(4).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(5).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(6).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(7).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(8).Select


    Selection.ParagraphFormat.Alignment =
wdAlignParagraphCenter
 wdAlignParagraphCenter
    
    'Trata estilo da tabela


    '[primeira linha alinhado ao centro/negrito/cor]


    myTable.Rows(1).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    Selection.Font.Bold = wdToggle


    'Altera_Fundo


    
    'Passar informacoes de coluna e linha


    '[qual coluna e linha que deve comecar a preencher]


    lEof = True


    nCol = 1


    nLin =
2
 2
    
    'Realiza a impressao do campo memo que a rotina OGRR342 transmite


    While (lEof)

nPos =

        nPos = InStr(cMemo, "#*")

cText =

        cText = Mid(cMemo, 1, nPos - 1)

cMemo =

        cMemo = Mid(cMemo, nPos +
2)
'Imprime o texto na coluna e linha informada
 2)
        
        'Imprime o texto na coluna e linha informada
        myTable.Cell(nLin, nCol).Range.Text =
cText
 cText
        
        'Soma a coluna ate chegar na coluna 8 [definido pela rotina OGRR342]


        'Se for maior que 8 entra no IF para somar a
linha
nCol = nCol + 1
If nCol > 8 Then
nCol = 1
nLin = nLin + 1
End If
'Se imprimiu tudo sai do while e termina a impressao
If IsEmpty(cMemo) Or nLin > (nReg) Then
lEof = False
End If
Wend
End Sub'REALIZA A IMPRESSAO DA TABELA CADENCIA DO CONTRATO NNY
Sub TABCADEN()
'Variaveis de controle
Dim nPos As Integer
Dim cMemo As String
Dim cText As String
Dim nContador As Integer
Dim lEof As Boolean
Dim nLin As Integer
Dim nCol As Integer
Dim nReg As Integer
 linha
        nCol = nCol + 1
        If nCol > 8 Then
            nCol = 1
            nLin = nLin + 1
        End If
        
        'Se imprimiu tudo sai do while e termina a impressao
        If IsEmpty(cMemo) Or nLin > (nReg) Then
            lEof = False
        End If
    Wend
End Sub

'REALIZA A IMPRESSAO DA TABELA CADENCIA DO CONTRATO NNY
Sub TABCADEN()
    'Variaveis de controle
    Dim nPos As Integer
    Dim cMemo As String
    Dim cText As String
    Dim nContador As Integer
    Dim lEof As Boolean
    Dim nLin As Integer
    Dim nCol As Integer
    Dim nReg As Integer
    
    ActiveDocument.ActiveWindow.View.FieldShading =
_
wdFieldShadingWhenSelected
'Conta a variavel cMemo que retorna da rotina OGRR342
nContador =
 _
                   wdFieldShadingWhenSelected
    
    'Conta a variavel cMemo que retorna da rotina OGRR342
    nContador = ActiveDocument.Fields.Count


    If nContador >= 1
Then
With ActiveDocument
 Then
            With ActiveDocument.Fields(1)

.Update
cMemo =

                .Update
                cMemo = Trim(.Result.Text)


                .Result.Text = ""

End With
With

            End With
            With ActiveDocument.Fields(2)

.Update
nReg =

                .Update
                nReg = Val(Trim(.Result.Text))


                .Result.Text =
""
End With
End If
'Informa que será impresso na seção 3
 ""
            End With
    End If
    
    'Informa que será impresso na seção 3 [Count:=3]


    Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=3, Name:=""


    Selection.Find.ClearFormatting


    With Selection.Find


        .Text = "/"


        .Replacement.Text = ""


        .Forward =
True
 True
        .Wrap =
wdFindContinue
 wdFindContinue
        .Format =
False
 False
        .MatchCase =
False
 False
        .MatchWholeWord =
False
 False
        .MatchWildcards =
False
 False
        .MatchSoundsLike =
False
 False
        .MatchAllWordForms = False


    End
With
 With
    
    'Criando a tabela


    Set myTable = _


    ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=nReg,
_
 _
        NumColumns:=5)


        
    myTable.AutoFormat Format:=wdTableFormatProfessional,
_
ApplyBorders:=True,
 _
        ApplyBorders:=True, ApplyShading:=True, ApplyFont:=False, ApplyColor:=True
_
,
 _
        , ApplyHeadingRows:=False, ApplyLastRow:=False, ApplyFirstColumn:=False,
_
 _
        ApplyLastColumn:=False, AutoFit:=True


  
    
    'alinha o texto ao meio horizontal e vertical


    myTable.Select


        Selection.Cells.VerticalAlignment =
wdCellAlignVerticalCenter
'a soma InchesToPoints não devem passar 6.6 - AJUSTA O TAMANHO DAS COLUNAS
 wdCellAlignVerticalCenter
    
    'a soma InchesToPoints não devem passar 6.6     - AJUSTA O TAMANHO DAS COLUNAS
    myTable.Columns(1).Width = InchesToPoints(0.8)


    myTable.Columns(2).Width = InchesToPoints(0.8)


    myTable.Columns(3).Width = InchesToPoints(1.1)


    myTable.Columns(4).Width = InchesToPoints(1.9)


    myTable.Columns(5).Width = InchesToPoints(1.9)


    
    'cabeçalho da tabela - DEVE SER IMPRESSO TODAS AS COLUNAS AQUI DESCRITAS


    myTable.Columns(1).Cells(1).Range.Text = "DT INI"


    myTable.Columns(2).Cells(1).Range.Text = "DT FIN"


    myTable.Columns(3).Cells(1).Range.Text = "QUANTIDADE"


    myTable.Columns(4).Cells(1).Range.Text = "ENT ORIGEM"


    myTable.Columns(5).Cells(1).Range.Text = "ENT DESTINO"


                   
    'Alinha o conteudo das linhas e
colunas
myTable
 colunas
    myTable.Columns(1).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(2).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(3).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight


    myTable.Columns(4).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft


    myTable.Columns(5).Select


    Selection.ParagraphFormat.Alignment =
wdAlignParagraphLeft
 wdAlignParagraphLeft

    myTable.Rows(1).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    Selection.Font.Bold =
wdToggle
 wdToggle
    
    
    'Passar informacoes de coluna e linha


    '[qual coluna e linha que deve comecar a preencher]


    lEof = True


    nCol = 1


    nLin =
2
 2
    
    'Realiza a impressao do campo memo que a rotina OGRR342 transmite


    While (lEof)

nPos =

        nPos = InStr(cMemo, "#*")

cText =

        cText = Mid(cMemo, 1, nPos - 1)

cMemo =

        cMemo = Mid(cMemo, nPos + 2)


        
        'Imprime o texto na coluna e linha
informada
myTable
 informada
        myTable.Cell(nLin, nCol).Range.Text =
cText
 cText
        
        'Soma a coluna ate chegar na coluna 8 [definido pela rotina OGRR342]


        'Se for maior que 8 entra no IF para somar a
linha
nCol = nCol + 1
If nCol > 5 Then
nCol = 1
nLin = nLin + 1
End If
'Se imprimiu tudo sai do while e termina a impressao
If IsEmpty(cMemo) Or nLin > (nReg) Then
lEof = False
End If
Wend
End Sub'REALIZA A IMPRESSAO DA TABELA CORRETORAS DO CONTRATO NNF
Sub TABCORRET()
'Variaveis de controle
Dim nPos As Integer
Dim cMemo As String
Dim cText As String
Dim nContador As Integer
Dim lEof As Boolean
Dim nLin As Integer
Dim nCol As Integer
Dim nReg As Integer
 linha
        nCol = nCol + 1
        If nCol > 5 Then
            nCol = 1
            nLin = nLin + 1
        End If
        
        'Se imprimiu tudo sai do while e termina a impressao
        If IsEmpty(cMemo) Or nLin > (nReg) Then
            lEof = False
        End If
    Wend
End Sub

'REALIZA A IMPRESSAO DA TABELA CORRETORAS DO CONTRATO NNF
Sub TABCORRET()
    'Variaveis de controle
    Dim nPos As Integer
    Dim cMemo As String
    Dim cText As String
    Dim nContador As Integer
    Dim lEof As Boolean
    Dim nLin As Integer
    Dim nCol As Integer
    Dim nReg As Integer
    
    ActiveDocument.ActiveWindow.View.FieldShading =
_
wdFieldShadingWhenSelected
'Conta a variavel cMemo que retorna da rotina OGRR342
nContador =
 _
                   wdFieldShadingWhenSelected
    
    'Conta a variavel cMemo que retorna da rotina OGRR342
    nContador = ActiveDocument.Fields.Count


    If nContador >= 1
Then
With
 Then
            With ActiveDocument.Fields(1)

.Update
cMemo = Trim

                .Update
                cMemo = Trim(.Result.Text)


                .Result.Text = ""

End With
With

            End With
            With ActiveDocument.Fields(2)

.Update
nReg =

                .Update
                nReg = Val(Trim(.Result.Text))


                .Result.Text = ""

End With
End If
'Informa que será impresso na seção 4

            End With
    End If
    
    'Informa que será impresso na seção 4 [Count:=4]


    Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=4, Name:=""


    Selection.Find.ClearFormatting


    With Selection.Find


        .Text = "/"


        .Replacement.Text = ""


        .Forward =
True
 True
        .Wrap =
wdFindContinue
 wdFindContinue
        .Format =
False
 False
        .MatchCase =
False
 False
        .MatchWholeWord =
False
 False
        .MatchWildcards =
False
 False
        .MatchSoundsLike =
False
 False
        .MatchAllWordForms = False


    End
With
 With
    
    'Criando a tabela


    Set myTable = _


    ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=nReg,
_
 _
        NumColumns:=4)


        
    myTable.AutoFormat Format:=wdTableFormatProfessional,
_
 _
        ApplyBorders:=True, ApplyShading:=True, ApplyFont:=False, ApplyColor:=True
_
,
 _
        , ApplyHeadingRows:=False, ApplyLastRow:=False, ApplyFirstColumn:=False,
_
 _
        ApplyLastColumn:=False, AutoFit:=True


  
    
    'alinha o texto ao meio horizontal e vertical


    myTable.Select


        Selection.Cells.VerticalAlignment =
wdCellAlignVerticalCenter
 wdCellAlignVerticalCenter
    
    'a soma InchesToPoints não devem passar 6.6     - AJUSTA O TAMANHO DAS COLUNAS


    myTable.Columns(1).Width = InchesToPoints(2.2)


    myTable.Columns(2).Width = InchesToPoints(2.2)


    myTable.Columns(3).Width = InchesToPoints(1.2)


    myTable.Columns(4).Width = InchesToPoints(1)


    
    'cabeçalho da tabela - DEVE SER IMPRESSO TODAS AS COLUNAS AQUI DESCRITAS


    myTable.Columns(1).Cells(1).Range.Text = "ENTIDADE"


    myTable.Columns(2).Cells(1).Range.Text = "CORRETORA"


    myTable.Columns(3).Cells(1).Range.Text = "VLR COMISSÃO"


    myTable.Columns(4).Cells(1).Range.Text = "%
COMISSÃO" 'Alinha o conteudo das linhas e colunas
 COMISSÃO"

                   
    'Alinha o conteudo das linhas e colunas
    myTable.Columns(1).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft


    myTable.Columns(2).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft


    myTable.Columns(3).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight


    myTable.Columns(4).Select

Selection

    Selection.ParagraphFormat.Alignment =
wdAlignParagraphRight
 wdAlignParagraphRight

    myTable.Rows(1).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    Selection.Font.Bold = wdToggle


    'Altera_Fundo


    
    'Passar informacoes de coluna e linha


    '[qual coluna e linha que deve comecar a preencher]


    lEof = True


    nCol =
1
nLin = 2
'Realiza a impressao do campo memo que a rotina OGRR342 transmite
While (lEof)
nPos =
 1
    nLin = 2
    
    'Realiza a impressao do campo memo que a rotina OGRR342 transmite
    While (lEof)
        nPos = InStr(cMemo, "#*")

cText =

        cText = Mid(cMemo, 1, nPos - 1)

cMemo =

        cMemo = Mid(cMemo, nPos +
2)
'Imprime o texto na coluna e linha informada
 2)
        
        'Imprime o texto na coluna e linha informada
        myTable.Cell(nLin, nCol).Range.Text =
cText
 cText
        
        'Soma a coluna ate chegar na coluna 8 [definido pela rotina OGRR342]


        'Se for maior que 8 entra no IF para somar a
linha
nCol = nCol + 1
If nCol > 4 Then
nCol = 1
nLin = nLin + 1
End If
'Se imprimiu tudo sai do while e termina a impressao
If IsEmpty(cMemo) Or nLin > (nReg) Then
lEof = False
End If
Wend
End Sub'REALIZA A IMPRESSAO DA TABELA CESSAO DE CREDITO NNG
Sub TABCESSC()
'Variaveis de controle
Dim nPos As Integer
Dim cMemo As String
Dim cText As String
Dim nContador As Integer
Dim lEof As Boolean
Dim nLin As Integer
Dim nCol As Integer
Dim nReg As Integer
 linha
        nCol = nCol + 1
        If nCol > 4 Then
            nCol = 1
            nLin = nLin + 1
        End If
        
        'Se imprimiu tudo sai do while e termina a impressao
        If IsEmpty(cMemo) Or nLin > (nReg) Then
            lEof = False
        End If
    Wend
End Sub

'REALIZA A IMPRESSAO DA TABELA CESSAO DE CREDITO NNG
Sub TABCESSC()
    'Variaveis de controle
    Dim nPos As Integer
    Dim cMemo As String
    Dim cText As String
    Dim nContador As Integer
    Dim lEof As Boolean
    Dim nLin As Integer
    Dim nCol As Integer
    Dim nReg As Integer
    
    ActiveDocument.ActiveWindow.View.FieldShading =
_
wdFieldShadingWhenSelected
'Conta a variavel cMemo que retorna da rotina OGRR342
nContador =
 _
                   wdFieldShadingWhenSelected
    
    'Conta a variavel cMemo que retorna da rotina OGRR342
    nContador = ActiveDocument.Fields.Count


    If nContador >= 1
Then
With ActiveDocument.Fields(1)
.Update
cMemo =
 Then
            With ActiveDocument.Fields(1)
                .Update
                cMemo = Trim(.Result.Text)


                .Result.Text =
""
End With
With ActiveDocument
 ""
            End With
            With ActiveDocument.Fields(2)

.Update
nReg =

                .Update
                nReg = Val(Trim(.Result.Text))


                .Result.Text = ""

End With
End If
'Informa que será impresso na seção 5

            End With
    End If
    
    'Informa que será impresso na seção 5 [Count:=5]


    Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, Count:=5, Name:=""


    Selection.Find.ClearFormatting


    With Selection.Find


        .Text = "/"


        .Replacement.Text = ""


        .Forward =
True
 True
        .Wrap =
wdFindContinue
 wdFindContinue
        .Format =
False
 False
        .MatchCase =
False
 False
        .MatchWholeWord =
False
 False
        .MatchWildcards =
False
 False
        .MatchSoundsLike =
False
 False
        .MatchAllWordForms = False


    End
With
 With
    
    'Criando a tabela


    Set myTable = _


    ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=nReg,
_
 _
        NumColumns:=8)


        
    myTable.AutoFormat Format:=wdTableFormatProfessional,
_
ApplyBorders:
 _
        ApplyBorders:=True, ApplyShading:=True, ApplyFont:=False, ApplyColor:=True
_
,
 _
        , ApplyHeadingRows:=False, ApplyLastRow:=False, ApplyFirstColumn:=False,
_
 _
        ApplyLastColumn:=False, AutoFit:=True


  
    
    'alinha o texto ao meio horizontal e vertical


    myTable.Select


        Selection.Cells.VerticalAlignment =
wdCellAlignVerticalCenter
'a soma InchesToPoints não devem passar 6.6 - AJUSTA O TAMANHO DAS COLUNAS
 wdCellAlignVerticalCenter
    
    'a soma InchesToPoints não devem passar 6.6     - AJUSTA O TAMANHO DAS COLUNAS
    myTable.Columns(1).Width = InchesToPoints(1)


    myTable.Columns(2).Width = InchesToPoints(1)


    myTable.Columns(3).Width = InchesToPoints(1.1)


    myTable.Columns(4).Width = InchesToPoints(0.7)


    myTable.Columns(5).Width = InchesToPoints(0.8)


    myTable.Columns(6).Width = InchesToPoints(0.4)


    myTable.Columns(7).Width = InchesToPoints(1)


    myTable.Columns(8).Width = InchesToPoints(0.4)


    
    'cabeçalho da tabela - DEVE SER IMPRESSO TODAS AS COLUNAS AQUI DESCRITAS


    myTable.Columns(1).Cells(1).Range.Text = "FAVORECIDO"


    myTable.Columns(2).Cells(1).Range.Text = "QTD CESSÃO"


    myTable.Columns(3).Cells(1).Range.Text = "VALOR PGTO"


    myTable.Columns(4).Cells(1).Range.Text = "BANCO"


    myTable.Columns(5).Cells(1).Range.Text = "AGENCIA"


    myTable.Columns(6).Cells(1).Range.Text = "DG"


    myTable.Columns(7).Cells(1).Range.Text = "CONTA"


    myTable.Columns(8).Cells(1).Range.Text = "DG"


                   
    'Alinha o conteudo das linhas e colunas


    myTable.Columns(1).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(2).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(3).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight


    myTable.Columns(4).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(5).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(6).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(7).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    myTable.Columns(8).Select


    Selection.ParagraphFormat.Alignment =
wdAlignParagraphCenter
 wdAlignParagraphCenter
    
    'Trata estilo da tabela


    '[primeira linha alinhado ao centro/negrito/cor]


    myTable.Rows(1).Select


    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter


    Selection.Font.Bold = wdToggle


    Altera_Fundo


    
    'Passar informacoes de coluna e linha


    '[qual coluna e linha que deve comecar a preencher]


    lEof = True


    nCol = 1


    nLin =
2
 2
    
    'Realiza a impressao do campo memo que a rotina OGRR342 transmite


    While (lEof)

nPos =

        nPos = InStr(cMemo, "#*")

cText =

        cText = Mid(cMemo, 1, nPos - 1)

cMemo =

        cMemo = Mid(cMemo, nPos + 2)

'Imprime o texto na coluna e linha informada

        
        'Imprime o texto na coluna e linha informada
        myTable.Cell(nLin, nCol).Range.Text =
cText
 cText
        
        'Soma a coluna ate chegar na coluna 8 [definido pela rotina OGRR342]


        'Se for maior que 8 entra no IF para somar a
linha
nCol = nCol + 1
If nCol > 8 Then
nCol = 1
nLin = nLin + 1
End If
'Se imprimiu tudo sai do while e termina a impressao
If IsEmpty(cMemo) Or nLin > (nReg) Then
lEof = False
End If
Wend
End Sub
 linha
        nCol = nCol + 1
        If nCol > 8 Then
            nCol = 1
            nLin = nLin + 1
        End If
        
        'Se imprimiu tudo sai do while e termina a impressao
        If IsEmpty(cMemo) Or nLin > (nReg) Then
            lEof = False
        End If
    Wend
End Sub


Deve ser criada seções para cada macro(tabela), pois as seções são responsáveis para a impressão das tabelas. Criar conforme exemplo abaixo.

Image Added


Com isso, está pronto o documento word para a impressão de contrato. Lembrando que cada contrato tem sua particularidade de macros.

Observações:

Opção disponível

Observações:

Opção disponivel para as rotinas:

  • Gestão de Agronegócio > Atualização >> Originação >>> Controle Depto de 3 >>>> Contrato Depto de 3 (OGA260).
  • Gestão de Agronegócio > Atualização >> Originação >>> Controle Depto em 3 >>>> Contrato Depto em 3 (OGA270).
  • Gestão de Agronegócio > Atualização >> Originação >>> Controle de Compras >>>> Contrato de Compra (OGA280).
  • Gestão de Agronegócio > Atualização >> Originação >>> Controle de Vendas >>>> Contrato de Venda (OGA290).

Para todas as rotinas no browser inicial, selecionar o contrato desejado, ir em "Outras ações > Mais ações... >> Imprimir Word".