Eliminare randuri goale in tabele.

Informatii despre cum se utilizeaza Microsoft Word 2003. Editare, formatare, automatizare de documente
Închis
Apostolu
Mesaje: 285
Membru din: Joi Aug 20, 2009 4:05 pm

Eliminare randuri goale in tabele.

Mesaj de Apostolu » Joi Oct 10, 2013 6:30 pm

Din exces de zel unii isi bat singuri cuie in talpa !

Deci, avem un document cu foarte multe tabele.
Teoretic, tabele au acelasi nr. de coloane. Dar numai teoretic. :)
In tabele sunt foarte multe randuri goale care trebuie eliminate.

Cum se poate face chestia asta automat ?

IPP
Moderator
Moderator
Mesaje: 4196
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Eliminare randuri goale in tabele.

Mesaj de IPP » Vin Oct 11, 2013 5:18 pm

Buna ziua

Se pare ca macro de care aveti nevoie (inclusiv cateva precizari cum sa-l adaptati pentru a modifica toate tabelele din documentul respectiv) il gasiti aici

IP

PS. Pentru viitor, va rugam sa deschideti subiectele in sectiunea dedicata cf. versiunii pe care o folositi. Sectiunea de Tips ... este pentru altceva.

Apostolu
Mesaje: 285
Membru din: Joi Aug 20, 2009 4:05 pm

Re: Eliminare randuri goale in tabele.

Mesaj de Apostolu » Vin Oct 11, 2013 6:26 pm

Dragul meu,
Cu riscul de a ma bana "Dr. Office", aka Bogdan Tarla :))), de cand s-a inventat situl asta, problemele de acest gen s-au discutat pe Tips si pe Visual Basic for Application (VBA) - Intrebari tehnice.
O sa pun intrebarile pe VBA, cu toate ca ele sunt mult mai de folos pe Office pentru ca multi utilizatori habar nu au ca exista VBA ! :)

Cu stima !

Apostolu
Mesaje: 285
Membru din: Joi Aug 20, 2009 4:05 pm

Re: Eliminare randuri goale in tabele.

Mesaj de Apostolu » Vin Oct 11, 2013 6:45 pm

Scritul la care m-ai trimis chiar functioneaza dupa micile corecturi de rigoare. :))))

Asa ca il pun aici poate il mai foloseste cineva. :

Cod: Selectaţi tot

Sub DeleteEmptyRows()

'cod provenit de la http://word.mvps.org/faqs/macrosvba/DeleteEmptyRows.htm

Dim oTable As Table, oRow As Range, oCell As Cell, Counter As Long, _
NumRows As Long, TextInRow As Boolean

' Specify which table you want to work on.
Set oTable = Selection.Tables(1)
' Set a range variable to the first row's range
Set oRow = oTable.Rows(1).Range
NumRows = oTable.Rows.Count
Application.ScreenUpdating = False

For Counter = 1 To NumRows

    StatusBar = "Row " & Counter
    TextInRow = False

    For Each oCell In oRow.Rows(1).Cells
        If Len(oCell.Range.Text) > 2 Then
            'end of cell marker is actually 2 characters
            TextInRow = True
            Exit For
        End If
    Next oCell

    If TextInRow Then
        Set oRow = oRow.Next(wdRow)
    Else
        oRow.Rows(1).Delete
    End If

Next Counter

Application.ScreenUpdating = True

End Sub
Ultima oară modificat Vin Oct 11, 2013 7:22 pm de către IPP, modificat 1 dată în total.
Motiv: adaugare tag CODE si comentariu-link catre sursa codului

Apostolu
Mesaje: 285
Membru din: Joi Aug 20, 2009 4:05 pm

Re: Eliminare randuri goale in tabele.

Mesaj de Apostolu » Mie Oct 16, 2013 10:16 am

Testat in conditii reale, scriptul NU functioneaza daca tabela nu este perfect "ordonata" !
Orice merge vertical de celule, CHIAR daca nu este in primele 2 randuri duce la eroare.
"Run-time error '5991'
Cannot acces individual rows in this collection because the table has verticaly merged cells"

Deci scriptul NU trebuie sa verifice toata tabela, ci doar primele 2 randuri !!!
(merge pe 3 randuri la capul de tabel mai rar !)

Daca are cineva idei .... :)

Multumesc.

Închis

Înapoi la “Intrebari despre Word 2003”