Correção de forma irregular de tabelas mescladas no MS Word 2007

1

Eu tenho procurado a resposta para isso há algum tempo, mas sem sucesso, então espero que alguém aqui possa me ajudar.

Eu recentemente exportei um documento do FineReader 12 para o word. O documento é basicamente uma tabela de 130 páginas. A tabela tem uma forma regular : 5 colunas , sem células mescladas.

No entanto, quando eu mescla tabelas individuais (o FineReader as divide por página) em uma excluindo as linhas entre elas, a tabela obtém uma forma irregular em cada junta, assim:

.

Dadoograndenúmerodetabelasqueeutenho,existeumamaneiraderedefinirsuaformacompletamente?Atéagoraparecequeeutenhoqueajustarmanualmenteascolunasdecadatabelaparaasoutras.

Eutenteiredefiniralarguradatabelaedacoluna,quebraautomáticadetexto,etc.;Eutambémselecioneiatabelainteiraeverifiquei,emseguida,desmarcouo"cabeçalho da tabela" para todos.

A conversão da tabela para texto e vice-versa não funciona, porque algumas células têm quebras de parágrafo, e isso deve ser tratado mais tarde.

    
por MrVocabulary 29.12.2015 / 11:37

1 resposta

0

Ok, recebi uma resposta de Paul Edstein, também conhecido como macropod em Fóruns do MS Office que eu modifiquei um pouco e funciona como charme agora. Eu colo a solução aqui, pois pode economizar dezenas de horas de trabalho para qualquer pessoa que trabalhe com o OCR e outras coisas.

A ideia é criar uma macro que reformate o layout de cada tabela (e cada célula, se necessário), assim:

Sub FixTables()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim Tbl As Table, i As Long
With ActiveDocument
    For Each Tbl In .Tables
        With Tbl
            With .Rows
                .LeftIndent = 0
                .WrapAroundText = False
                .Alignment = wdAlignRowCenter
            End With
            .TopPadding = 0
            .LeftPadding = 0
            .RightPadding = 0
            .BottomPadding = 0
            .AllowAutoFit = False
            .PreferredWidthType = wdPreferredWidthAuto
            If .Uniform Then
                .Columns(1).Width = CentimetersToPoints(1#)
                .Columns(2).Width = CentimetersToPoints(3.75)
                .Columns(3).Width = CentimetersToPoints(3.75)
                .Columns(4).Width = CentimetersToPoints(3.75)
                .Columns(5).Width = CentimetersToPoints(3.75)
            Else
                For i = 1 To .Range.Cells.Count
                    Select Case (i - 1 Mod 5) + 1
                        Case 1: .Range.Cells(i).Width = CentimetersToPoints(1#)
                        Case Else: .Range.Cells(i).Width = CentimetersToPoints(3.75)
                    End Select
                Next
            End If
    End With
    While .Tables.Count > 1
        .Tables(1).Range.Characters.Last.Next.Delete
    Wend
Next
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

A única desvantagem é que, enquanto ele executa em apenas alguns segundos com apenas 3 tabelas, levou cerca de 15 minutos para realizar as alterações em um conjunto de 50 tabelas. Os ajustes incluem a desativação temporária da atualização da tela e a supressão de todos os alertas (caso contrário, ele solicitaria que as alterações fossem salvas cada vez que o Word ficasse sem RAM).

Por favor note que esta solução está adaptada apenas para 5 colunas, então ajuste-a de acordo!

    
por 05.01.2016 / 13:50