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)?
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
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"
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?)?
@ TS: misschien kun je iets met die scripttaal die in Office zit doen (Visual Basic?)?
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..
)
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:
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 |