Als.. Dan.. randen in Word

Status
Niet open voor verdere reacties.

Withaar

Verenigingslid
Lid geworden
8 apr 2001
Berichten
3.551
In het kort komt het er op neer dat ik data merge vanuit een .csv bestand in Word.
De data kan meerder kolommen data bevatten en ook meerder rijen.
Nu zou ik graag de randen van de tabel alleen zichtbaar krijgen als een rij of kolom ook daadwerkelijk data bevat. Zeg maar een soort Als (data) Dan (rand) voor een tabel in Word.

In de excel bijlage (Als dan voor randen (in Word).xls) heb ik geprobeerd uit te leggen wat ik wil, samen met wat scherm printjes van het gewenste resultaat in Word.
Ik heb er ook een data.csv en een Presentatie lijst.dot bij gedaan zodat je zelf e.a. kunt uitproberen.

Tips, macro's, oplossingen in excel (voorkeur gaat wel uit naar een Word oplossing)... alles is welkom.
 

Bijlagen

Laatst bewerkt:
Kan vermoedelijk mooier en korter, maar dit werkt;

Code:
Private Sub Document_Open()
   Dim lCol As Long
   Dim lRow As Long
   Dim xx As String
   Dim x As Single
   Dim y As Single
   Dim oArray As Variant
      
    lColCount = ActiveDocument.Tables(1).Columns.Count
    lRowCount = ActiveDocument.Tables(1).Rows.Count
                    
    lCol = 2
    xx = ActiveDocument.Tables(1).Cell(1, lCol).Range.Text
    If xx <> "" Then
    lCol = lCol + 1
    End If

    lRow = 2
    xx = ActiveDocument.Tables(1).Cell(lRow, 1).Range.Text
    If xx <> "" Then
    lRow = lRow + 1
    End If
    'MsgBox (lCol & " " & lRow)
    
    For x = 1 To lCol
    For y = 1 To lRow
        Set rng = ActiveDocument.Tables(1).Cell(x, y)
        rng.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
        rng.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
        rng.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
        rng.Borders(wdBorderRight).LineStyle = wdLineStyleSingle
    Next
    Next
End Sub
 
Laatst bewerkt:
Als ik je vraag goed begrijp kan het iets korter:

Code:
Sub tst()
  For Each cl In ActiveDocument.Tables(1).Range.Cells
    If Len(cl.Range) = 2 Then
      For j = -4 To -1
        cl.Borders(j).LineStyle = wdLineStyleNone
      Next
    End If
  Next
End Sub
 
Nee, dat werkt niet (zo als ik zou willen)
Ik heb het al werkend dus er is geen haast bij, maar leg eens uit wat je macro zou moeten doen.

Het idee is dat er soms maar 1 datum is, dus twee kolommen, Naam in de A kolom (A2) en de Datum in B1.
Maar in de data kunnen ook 6 datums staan, dus 7 gevulde kolommen.
Voor de rijen geldt het zelfde, soms maar één naam, maar soms ook 12 (of zelf nog meer).
'Cel A1' is daarbij altijd leeg, Data begint op B1 met de datums naar rechts en in A2 met de namen naar beneden.
De vulling van de tabel kan dus ergens tussen 2x2 en 7x13 liggen.
 
Is dit beter ?

Code:
Sub tst()
  For Each cl In ActiveDocument.Tables(1).Columns
    cl.Select
    If Selection.Characters.Count = cl.Cells.Count Then cl.Delete
  Next
  For Each rw In ActiveDocument.Tables(1).Rows
      If rw.Range.Characters.Count = rw.Cells.Count + 1 Then rw.Delete
  Next
End Sub
 
Laatst bewerkt:
Ja, voor de (overbodige) kolommen werkt dit prima.
Met de rijen doet de macro echter (bij mij) niets.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan