Alexander (HH): Word 2002 Automation: Überschrift und Text zu einer Tabelle

Beitrag lesen

Moin Moin!

Ich habe ein riesiges Word(2002)-Dokument mit knapp 600 Tabellen, jede Tabelle hat einen einleitenden Text und eine Überschrift, manchen Tabellen folgt auch noch etwas Text.

Es hat sich rausgestellt, dass die Tabellen auch noch einige strukturelle Schäden hatten, sinngemäß so etwas:

  
<tr><td colspan=2>bla</td><td>bla</td></tr>  
<tr><td>bla</td><td colspan=2>bla</td></tr>  

Das sieht zwar optisch fast identisch aus wie die Version ohne colspan, macht beim Zerlegen aber mehr Mühe.

Dazu kommen noch lustige Geschichten wie "durchgebrochene" Tabellen, die mittendrin aufhören und mit einer neuen, kopflosen Tabelle fortgeführt werden.

Word 2002 hab' ich nicht, mit Perl hab' ich wenig am Hut, aber VBA sollte sich leicht in Perl-Word-Automation übersetzen lassen.

Ich vermute, dass Dir das Range-Objekt weiterhelfen kann:

For Each t In ActiveDocument.Tables
        Set r = t.Range
        ' gehe zum Absatz vor dem Absatz, der die Tabelle enthält
        r.MoveStart wdParagraph, -1
        r.MoveEnd wdParagraph, -1

Sehr interessanter Ansatz. Ich bin davon ausgegangen, dass das Range-Objekt jeweils auf das übergeordnete Objekt begrenzt ist, ich mit dem Range also nicht aus der Tabelle herauskomme.

Letzten Endes habe ich die Datei in Word als gefiltertes HTML gespeichert und mit XML::LibXML in mehreren Schritten aufgeräumt, ausgemistet, und die gewünschten Daten herausgefummelt. Damit hab ich zwar immer noch keinen Plan, wie genau die Automation tickt, aber ich habe mein Ergebnis. Das war im Moment wichtiger.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".