Toon posts:

[VBA/Excel] Tabel maken met een macro*

Pagina: 1
Acties:
  • 792 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben van plan om een macro te maken in Excel die in Word een tabel neerzet met gegevens in.
Maar ik heb een probleem met het creeren van de tabel. De macro wil gewoon de tabel niet weergeven in Word.

Weet iemand hier soms een oplossing voor.

Greetz

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Open_MSWord()
On Error GoTo errorHandler
Dim wdApp As New Word.Application
Dim myDoc As New Word.Document

With wdApp
    .Visible = True
    .WindowState = wdWindowStateMaximize
    .Documents.Add
End With

Set myDoc = wdApp.ActiveDocument

myDoc.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:=1

errorHandler:
Set wdApp = Nothing
Set myDoc = Nothing
Set mywdRange = Nothing
End Sub

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

VBA en Excel horen bij Office, en Office hoort in Officesuites en -software. Verder was je titel niet echt duidelijk omschrijvend voor je probleem, dus die heb ik ook even opgepimpt. :P

PW>>OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Het selection object en automation gaan niet goed samen :'( en je verzuimt om aan te geven welk selectionobject je gebruikt:

m.a.w. een van deze twee zou moeten werken:
code:
1
2
3
mydoc.tables.add wdApp.Selection.range
of
mydoc.tables.add mydoc.window.selection.range


maar eerder zou ik heel dat selectionobject vergeten:
Visual Basic:
1
2
    Set myDoc = wdApp .Documents.Add
   myDoc.Tables.Add myDoc.Content, NumRows:=3, NumColumns:=3

Ben je meteen af van dat lelijke eerst document toevoegen en retrunvariabele negeren en vervolgens mydoc op activedocument zetten. Waarom niet meteen?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Thx Niesje, nu werkt et

Verwijderd

Topicstarter
Nu dat de creatie van de tabel werkt (dankzij Niesje) , zit ik met nog een probleem.

Hoe kan ik ervoor zorgen dat er enkel in bepaalde cellen tekst komt te staan (geselecteerd uit Excel sheet)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Sub Open_MSWord()


Dim wdApp As New Word.Application
Dim myDoc As New Word.Document
Dim NumberOfRows As Integer
Dim Rest As Double

With wdApp
    .Visible = True
    .WindowState = wdWindowStateMaximize
    .Documents.Add
End With

Set myDoc = wdApp.ActiveDocument

NumberOfRows = WorksheetFunction.RoundUp(Selection.Count, 0) / 2

myDoc.Tables.Add Range:=wdApp.Selection.Range, NumRows:=NumberOfRows, NumColumns:=5, _
DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
   wdAutoFitFixed

    With wdApp.Selection.Tables(1)
        If .Style <> "Tabelraster" Then
            .Style = "Tabelraster"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
    wdApp.Selection.Font.Name = "Trebuchet MS"
    wdApp.Selection.Font.Size = 11
    myDoc.Tables(1).Columns(1).PreferredWidthType = wdPreferredWidthPoints
    myDoc.Tables(1).Columns(1).PreferredWidth = CentimetersToPoints(0.33)
    myDoc.Tables(1).Columns(2).PreferredWidthType = wdPreferredWidthPoints
    myDoc.Tables(1).Columns(2).PreferredWidth = CentimetersToPoints(9.23)
    myDoc.Tables(1).Columns(3).PreferredWidthType = wdPreferredWidthPoints
    myDoc.Tables(1).Columns(3).PreferredWidth = CentimetersToPoints(0.33)
    myDoc.Tables(1).Columns(4).PreferredWidthType = wdPreferredWidthPoints
    myDoc.Tables(1).Columns(4).PreferredWidth = CentimetersToPoints(9.23)
    myDoc.Tables(1).Columns(5).PreferredWidthType = wdPreferredWidthPoints
    myDoc.Tables(1).Columns(5).PreferredWidth = CentimetersToPoints(0.33)
    
    mydoc.Tables(1).Cell(1,1).????? --> hier zit ik dus vast
   
Set wdApp = Nothing
Set myDoc = Nothing
Set mywdRange = Nothing

End Sub

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Tipje: het cell object heeft een Range property.
Dat rangeobject heeft een text property en die is lezen en schrijven.

Druk eens in de VBA editor op F2. Je komt dan in de zogenaamde objectbrowser terecht waarin je alle word objecten, hun properties, methoden en events kunt verkennen en direct door F1 te drukken verdere hulp op kunt vragen. Reuze handig en erg informatief. ;)

offtopic:
Je mag je code best wel wat inkorten zodat alleen het relevante stuk overblijft
;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1