opmaak WORD-tabel aansturen vanuit Excel

Status
Niet open voor verdere reacties.

jofred

Gebruiker
Lid geworden
16 dec 2006
Berichten
172
Ik gebruik gegevens uit een Excel-bestand om WORD-bestanden te genereren. Daarbij wordt o.a. een tabel in WORD aangemaakt en gevuld met waarden uit Excel.
Op zich gaat dat best wel goed, alleen zit ik met nog een klein lay-outprobleem.

Ik wil graag de lay-out van cellen in WORD laten aansturen door de lay-out van de Excel-cellen:

als de onderstreping in Excel aanstaat, dan moet de tekst in de cel van de WORD-tabel ook worden onderstreept en bovendien vetgedrukt.en op grootte 14 worden gezet

deel van de code:
Code:
With objWord 
   With .Selection
         .EndKey Unit:=wdStory
         .TypeText Text:=vbCr & "Invulgedeelte"
         With .Font
              .Underline = False
              .Size = 8
         End With
         .TypeText Text:=vbCr & "(in te vullen door " & strGespreksPartner & " " & strVorigeAfdeling & ")" & vbCr & vbCr
         .Font.Size = 10.5
         .InsertBreak Type:=wdSectionBreakContinuous
         ' De tabel met het invulgedeelte maken en vullen (2 kolommen)
         .Tables.Add(.Range, Aantal, 2).Select
         With .Tables(1)
             For i = 1 To 2
                 .Columns(i).Width = Choose(i, 200, 248)
             Next i
             n = IntStartRijInvul
             For i = 1 To Aantal
                
                If Range("InvulTekst").Cells(i, 1).Font.Underline = xlNone Then
                    .Cell(i, 1) = Range("InvulTekst").Cells(i, 1).Value
                Else
                    'hier moet nog code komen om onderstreping en lettergrootte aan te passen
                     .Cell(i, 1) = Chr(171) & Range("InvulTekst").Cells(i, 1).Value & Chr(187)
                End If
             Next i
             ' ervoor zorgen dat de tabel lijntjes krijgt werkt alleen bij WORD 2003
             If objWord.Version = "11.0" Then
                If .Style <> "Tabelraster" Then
                   .Style = "Tabelraster"
                End If
                .ApplyStyleHeadingRows = True
                .ApplyStyleLastRow = False
                .ApplyStyleFirstColumn = True
                .ApplyStyleLastColumn = False
             End If
         End With
    End With
End With

Ik heb een aantal dingen geprobeerd, maar krijg het niet voor elkaar.
Heeft iemand suggesties?
 
Maak in Word een document met alle standaardvormgevingen en opmaak (incl. tabel met opmaak).
Je hoeft het dan alleen maar te openen met VBA vanuit Excel en te vullen met Excelgegevens. VBA is niet handig voor vormgeving en opmaak van Word-documenten.
 
SNB,

Allereerst dank voor je reactie.
De lay-out van de tabel zal hier niet zoveel oplossen denk ik, Het kan nl. zo zijn dat ergens midden in de tabel (op een variabele plaats) een afwijkende lay-out moet worden afgedrukt.
Heb jij - of iemand anders - nog verder suggesties?

Bij voorbaat dank

Jofred
 
Dan nog is mijn suggestie veel eenvoudiger dan jouw insteek.
Iets wijzigen aan een tabel met VBA is eenvoudiger dan een heel document opbouwen.
 
SNB,

Ik begrijp niet wat je bedoelt. Kun je me nog wat verder op weg helpen?

Jofred
 
open een Excelwerkblad met opmaak (onderstrepen/lettergrootte/vet)
selecteer een gebied dat je wil kopiëren; kopieer dat
open een leeg document in Word
klik op plakken (of ctrl-V)
In Word staat nu jouw Exceltabel met opmaak.

In VBA

Code:
Sub simpel()
  sheets(1).range("A1:K10").copy
  getobject(C:\tabelvoorbeeld.doc").characters.last.paste
End sub
 
Ik kon de oplossing/suggestie van SNB niet goed plaatsen/gebruiken. Daarom heb ik nog even verder nagedacht en gezocht en heb zelf een oplossing gevonden in de lijn van de rest van de code.

Ik heb de volgende aanvulling in de code aangebracht (vetgedrukt):

Code:
             For i = 1 To Aantal
                If Range("InvulTekst").Cells(i, 1).Font.Underline = xlNone Then
                    .Cell(i, 1) = Range("InvulTekst").Cells(i, 1).Value
                Else
                    'hier moet nog code komen om onderstreping en lettergrootte aan te passen
                     .Cell(i, 1) = Chr(171) & Range("InvulTekst").Cells(i, 1).Value & Chr(187)
[B]                     .Cell(i, 1).Range.Font.Bold = True
                     .Cell(i, 1).Range.Font.Underline = wdUnderlineSingle
                     .Cell(i, 1).Range.Font.Size = Range("InvulTekst").Cells(i, 1).Font.Size[/B]
                End If
             Next i

Daarmee heb ik het beoogde resultaat bereikt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan