Hallo,
Vanuit een financieel systeem krijg ik gegevens aangeleverd als tabelrijen in een Word document. Deze tabel wil ik middels een macro bewerken om deze leesbaarder te maken.
De gegevens krijg ik als volgt aangeleverd (in kolommen, zie Word bijlage voor een concreet voorbeeld):
H 10.00 Sloop
P 10.01 Begane grond
R ----- slopen begane grond
R ----- asbest wegmoffelen
P 10.02 eerste verdierping
R ----- Afkoppelen leidingen garage
R ----- Boiler demonteren parkeer garage
R ----- Diverse demonteren in restaurant
R ----- BSH verwijderen
Het resultaat dat ik voor elkaar wil krijgen ziet er als volgt uit:
H 10.00 Sloop
P 10.01 Begane grond
R ----- slopen begane grond
R ----- asbest wegmoffelen
P 10.01 Totaal Begane grond
P 10.02 eerste verdieping
R ----- Afkoppelen leidingen garage
R ----- Boiler demonteren parkeer garage
R ----- Diverse demonteren in restaurant
R ----- BSH verwijderen
P 10.02 Totaal eerste verdieping
H 10.00 Totaal Sloop
De truc is dat de macro de regels moet doorlopen en op de juiste plekken een regel moet toevoegen. Het herkennen kan aan de hand van de stuurcode.
De stappen die de macro moet doorlopen:
Regels uit de tabel doorlopen
- Indien stuurcode is H dan deze rij kopiëren naar HOOFDSTUKROW en de regel bold maken
- Indien stuurcode is P dan deze rij kopiëren naar PARAGRAAFROW en de regel bold maken
- Indien stuurcode is H en vorige stuurcode =’’ dan HOOFDSTUKROW inserten Inserten
- Indien stuurcode is P en vorige stuurcode =’’ dan PARAGRAAFROW inserten
Niet geheel gehinderd door veel VBA kennis ben ik hieraan begonnen.
Dit levert nog niet het gewenste resultaat op. Zo weet ik niet of het mogelijk is complete tabelrijen naar een variabele te kopieren. Ik wil expres niet het clipboard gebruiken omdat ik meerdere rijen wil onthouden. Vandaar dacht ik dus aan een variabele.
Wellicht is mijn aanpak ook niet de juiste.
Als iemand me op weg kan helpen, graag!
Martijn
Vanuit een financieel systeem krijg ik gegevens aangeleverd als tabelrijen in een Word document. Deze tabel wil ik middels een macro bewerken om deze leesbaarder te maken.
De gegevens krijg ik als volgt aangeleverd (in kolommen, zie Word bijlage voor een concreet voorbeeld):
H 10.00 Sloop
P 10.01 Begane grond
R ----- slopen begane grond
R ----- asbest wegmoffelen
P 10.02 eerste verdierping
R ----- Afkoppelen leidingen garage
R ----- Boiler demonteren parkeer garage
R ----- Diverse demonteren in restaurant
R ----- BSH verwijderen
Het resultaat dat ik voor elkaar wil krijgen ziet er als volgt uit:
H 10.00 Sloop
P 10.01 Begane grond
R ----- slopen begane grond
R ----- asbest wegmoffelen
P 10.01 Totaal Begane grond
P 10.02 eerste verdieping
R ----- Afkoppelen leidingen garage
R ----- Boiler demonteren parkeer garage
R ----- Diverse demonteren in restaurant
R ----- BSH verwijderen
P 10.02 Totaal eerste verdieping
H 10.00 Totaal Sloop
De truc is dat de macro de regels moet doorlopen en op de juiste plekken een regel moet toevoegen. Het herkennen kan aan de hand van de stuurcode.
De stappen die de macro moet doorlopen:
Regels uit de tabel doorlopen
- Indien stuurcode is H dan deze rij kopiëren naar HOOFDSTUKROW en de regel bold maken
- Indien stuurcode is P dan deze rij kopiëren naar PARAGRAAFROW en de regel bold maken
- Indien stuurcode is H en vorige stuurcode =’’ dan HOOFDSTUKROW inserten Inserten
- Indien stuurcode is P en vorige stuurcode =’’ dan PARAGRAAFROW inserten
Niet geheel gehinderd door veel VBA kennis ben ik hieraan begonnen.
Code:
Sub Subtotalen()
Dim varWaarde As Variant
Dim Stuurcode As Variant
Dim lastwaarde As Variant
Dim cll As Word.Cell
Dim HoofdstukROW As Word.Row
Dim ParagraafROW As Word.Row
With ActiveDocument
For Each cll In .Tables(1).Columns(1).Cells
'Stuurcode is een indicator van de regelsoort
Stuurcode = Left(cll.Range.Text, Len(cll.Range.Text) - 2)
'controleren of de huidige rij een nieuwe paragraaf of hoofdstuk is,
'en hier de vorige paragraaf header neerzetten
If lastwaarde = "" And Stuurcode = "P" Or Stuurcode = "H" Then
cll.Row.Select
Selection.InsertRowsAbove
Selection.Paste 'hier moet dus ParagraafROW neergezet worden
End If
'controleren of de huidige rij een nieuw hoofdstuk is,
'en hier de vorige hoofdstuk header neerzetten
If lastwaarde = "" And Stuurcode = "H" Then
cll.Row.Select
Selection.InsertRowsAbove
Selection.Paste 'hier moet dus HoofdstukROW neergezet worden
End If
'bijhouden wat de laatste regelsoort was
lastwaarde = level
'indien paragraaf regel, deze regel bold maken en kopieren naar PARAGRAAFROW
If level = "P" Then
cll.Row.Select
Selection.Range.Bold = True
ParagraafROW = cll.Row 'werkt niet
Selection.Copy
End If
'indien paragraaf regel, deze regel bold maken en kopieren naar HOOFDSTUKROW
If level = "H" Then
cll.Row.Select
Selection.Range.Bold = True
HoofdstukROW = cll.Row 'werkt niet
Selection.Copy
End If
Next
End With
End Sub
Wellicht is mijn aanpak ook niet de juiste.
Als iemand me op weg kan helpen, graag!
Martijn
Bijlagen
Laatst bewerkt: