Rijen in Word tabel kopieren naar variabelen

Status
Niet open voor verdere reacties.

MartijnvT

Nieuwe gebruiker
Lid geworden
1 sep 2009
Berichten
2
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.
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
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
 

Bijlagen

Laatst bewerkt:
Wees slim en importeer dit bestand in Excel. Dan is dit veel eenvoudiger aan te passen. Exporteren naar Word kan daarna altijd nog.
 
Wees slim en importeer dit bestand in Excel. Dan is dit veel eenvoudiger aan te passen. Exporteren naar Word kan daarna altijd nog.

Als het eenmalig zou zijn dan is dit een optie. Dit moet echter meerdere malen dagelijks gebeuren, Vandaar dat ik het geautomatiseerd wil doen.
 
En dat kan nou in Excel veel gemakkelijker.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan