Grafieken/tabellen tellen in Word-document

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

Acties:
  • 0 Henk 'm!

Anoniem: 19769

Topicstarter
Weet er iemand of er software of een truuk bestaat om gemakkelijk het aantal grafieken en/of tabellen in een word-document te tellen (zonder zelf heel het document te moeten doorlopen)?

Acties:
  • 0 Henk 'm!

  • TheXception
  • Registratie: December 2003
  • Niet online
Misschien een simpele oplossing hoor:
Gewoon in Excel maken en in word plakken via plakken speciaal en dan als Excel werkmap?

Bij dubbelklikken van het object opent excel.... etc

"It's better to burn out, than to fade away"


Acties:
  • 0 Henk 'm!

  • The Evil Brain
  • Registratie: Februari 2003
  • Laatst online: 22-06 21:22
ehm... dat is toch niet wat de TS vraagt? Want nu leg je gewoon uit hoe je grafieken in Word moet krijgen? :?

@ TS: misschien kun je iets met die scripttaal die in Office zit doen (Visual Basic?)?

Acties:
  • 0 Henk 'm!

Anoniem: 19769

Topicstarter
Het gaat om word-documenten die aangeleverd worden door onze klanten. Voordat het document doorgestuurd wordt naar onze productie-afdeling moeten we eerst een samenvattinkje maken waarin ondermeer vermeld wordt wat het aantal grafieken en tabellen in het document is. Het gaat dus puur om deze aantallen en niet hoe ze makkelijk bewerkt kunnen worden o.i.d.. (opl. met excel is dus niet relevant volgens mij.. :Y) )

Acties:
  • 0 Henk 'm!

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Zoals Evil Brain aanduidt kan je dit inderdaad via VBA in Word doen.
Maar het is ook een afhankelijk van hoe en wat voor tabellen en grafieken erin gezet zijn.

Als het gewoon om de standaard tabellen in Word gaat kan je dat aantal via ActiveDocument.Tables.Count opvragen, hierbij wordt wel echt elke tabel geteld ook "onzichtbare" die gebruikt worden om bijvoorbeeld de layout van een opsomming goed te krijgen of zo.

Om de grafieken te tellen wordt het iets lastiger omdat Word deze als Shape of InlineShape bewaart afhankelijk van hoe ze in de tekst staan en dan moet je nog eens kijken wat voor type het is.
Voor bijvoorbeeld Microsoft Graph grafieken moet je controleren of het een OLE Embedded object is en dan kijken de tekst "MSGraph.Chart" in de ClassType property voorkomt.
(De volledige classname is "MSGraph.Chart.8" maar zo tel je alle versies mee)

Voorbeeldcode:
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
Public Sub Test()

    Dim shpShape As Word.Shape
    Dim ishInlineShape As Word.InlineShape
    Dim lngAantalGrafieken As Long
    
    lngAantalGrafieken = 0
    
    For Each shpShape In ActiveDocument.Shapes
        If shpShape.Type = msoEmbeddedOLEObject Then
            If InStr(1, shpShape.OLEFormat.ClassType, "MSGraph.Chart", vbTextCompare) Then
                lngAantalGrafieken = lngAantalGrafieken + 1
            End If
        End If
    Next shpShape
    
    For Each ishInlineShape In ActiveDocument.InlineShapes
        If ishInlineShape.Type = wdInlineShapeEmbeddedOLEObject Then
            If InStr(1, ishInlineShape.OLEFormat.ClassType, "MSGraph.Chart", vbTextCompare) Then
                lngAantalGrafieken = lngAantalGrafieken + 1
            End If
        End If
    Next ishInlineShape
    
    Debug.Print lngAantalGrafieken

End Sub