Indizes in Tabellen umwandeln

06/11/2009 - 20:00 von Bevowa | Report spam
Ich arbeite an der Automatisierung einer WORD-Vorlage zur Erstellung
von Lastenheften. In dem Text des Lastenheftes werden Forderungen in
insgesamt vier Kategorien genannt. Diese Forderungen lasse ich
unabhàngig voneinander mit der SEQ-Funktion durchnummerieren. Zu jeder
Forderung füge ich einen Indexeintrag hinzu, der eine Kurzbeschreibung
zu der jeweiligen Forderung enthàlt. Es gibt die Forderungstypen MUSS,
KANN, AUS(schluss), OPT(ional).
Jetzt wird es spannend: Am Schluss des Dokuments möchte ich die
Informationen aus den vier Indizes in Form einer Tabelle ausgeben. In
der Tabelle soll in Spalte 1 die Nummer erscheinen, in Spalte 2 der
Kurztext und es soll eine leere dritte Spalte angelegt sein. Das soll
dann in etwa wie folgt aussehen:

Forderung Kurztext Spalte 3
M01 Forderung 1 Info 1
M02 Forderung 2 Info 2
Tabelle zu den MUSS-Forderungen

Forderung Kurztext Spalte 3
K01 Kann-Ford. 1 Info 17
K02 Kann-Ford. 2 Info 9
Tabelle zu den KANN-Forderungen

Dann sollen noch zwei Tabellen zu den Ausschlussforderungen und den
Optionen folgen.

Kann ich auf die Inhalte der Indexfelder zugreifen und diese Inhalte
per VBA in meinem Sinne zerlegen oder muss (kann) ich auf das
Indexfeld verzichten und muss mir stattdessen die Informationen aus
dem Text zusammensuchen und in die Tabelle eintragen?

In der Hoffnung auf HILFE!!!
 

Lesen sie die antworten

#1 Thomas Gahler
07/11/2009 - 21:04 | Warnen spam
Hallo Bevowa


Kann ich auf die Inhalte der Indexfelder zugreifen und diese Inhalte
per VBA in meinem Sinne zerlegen oder muss (kann) ich auf das
Indexfeld verzichten und muss mir stattdessen die Informationen aus
dem Text zusammensuchen und in die Tabelle eintragen?


Wenn ich dich richtig verrstehe, dann willst du am Schluss des Dokuments
vier Tabellen erzeugen in, welch du als Übersicht für deine Anforderungen
verwenden willst.
Wenn du diese Tabellen mittels VBA erzeugen wisst und nicht mittels eines
INDEX-Feldes dann sollte es schon klappen.

Und wenn deine XE-Felder gleichmàssig aufgebaut sind, dann solltest du das
hinbekommen. Im Moment sehe ich ncoh nicht wie du an deinen SEQ-Felder
kommst, doch diese müssten ja in den "Nàhe" des XE-Feldes stehen und somit
leicht über ine entsprechendes .Range-Objekt aufgespürt werden können.


Sub Demo()
Dim fld As Word.Field
Dim i As Integer
Dim strText As String

For Each fld In ActiveDocument.Fields
If fld.Type = wdFieldIndexEntry Then
With fld
For i = 1 To .Code.Words.Count
strText = strText & .Code.Words(i) & vbCr
Next i

MsgBox strText, vbOKOnly, .Code.Text
End With
End If
Next fld
End Sub





Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows Vista (SP2), Office 2007 (SP2)

Ähnliche fragen