Word97 Makro TextinTabelle Spaltenzahl automatisch

Hi,

wie kann ich in Word 97 oder 2000 ein Makro/VB-Funktion realisieren, die einen Text mit Tabulatoren in eine Tabelle wandelt, wobei sich die Zahl der Spalten nach der Zahl der Tabs in der ersten Zeile richtet?
Oder ich könnte als erstes Wort eine Zahl haben, die gleich der Anzahl der Spalten ist.
Der Text wird aus einer Datenbank erzeugt, kann ich also frei gestalten, nur die Zahl der Spalten ist jedesmal anders.

Vielen Dank

Martin

Hallo Martin

Wenn Du dafür sorgst, daß JEDE Zeile Deines Textes dieselbe Anzahl von Tabs hat, dann ist es ganz einfach. Zeichne den Vorgang auf (also Text in Tabelle mit Tab als Trennzeichen). Das so erzeugte Makro sollte bei einer beliebigen Anzahl von Tabs funktionieren - vorausgesetzt nicht nur die erste Zeile, sondern alle betroffenen Zeilen haben dieselbe Tab-Anzahl.

Viel Spaß
Thomas

Hallo Thomas,

bisher dachte ich immer, daß die erste Zeile die Tabellenbreite bestimmt. Ich habe eine solche Zeile natürlich erzeugt.

Wenn ich das Makro aufzeichne, dann setzt er in die Variable für Breite die entsprechende Zahl rein.
Kann ich durch editieren des Makros eine Variable „Auto“ einsetzen? Weglassen der Variable hat nicht gefruchtet.

Zahl der Tabs berechnen
Hallo Martin

Leider läßt sich die Anzahl nicht auf Automatik stellen, allerdings kann man die Anzahl der Spalten selbst berechnen. Der folgende Code macht den Trick:

’ Bestimme Anzahl Absätze und Anzahl der Zeichen
zeilen = Selection.Paragraphs.Count
Zeichen = Selection.Characters.Count
’ Bilde einen Loop über alle Zeichen und zähle die Anzahl der Tabs
Cou = 0
For I = 1 To Zeichen
If Selection.Characters(I).Text = vbTab Then
Cou = Cou + 1
End If
Next I
’ Nehme nun an, daß in jeder Zeile dieselbe Anzahl von Tabs ist.
’ Dabei ist zu bedenken, daß die Anzahl der Spalten wegen der Absatzmarke um ein höher ist
Cou = Cou / zeilen + 1
Selection.ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=Cou, _
NumRows:=zeilen, Format:=wdTableFormatNone, ApplyBorders:=True, ApplyShading:= _
True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
AutoFit:=False

Viel Spaß
Thomas

Danke für den Fisch!

Ich werds mal probieren.
Ich habe mir auch schon die Spaltenzahl als erstes Zeichen geschickt und dann verwendet, ist aber auch nicht die eleganteste Methode

Hallo Martin

Falls es darum geht, eine Tabelle mit Tabulatoren in eine echte Word-Tabelle umzuwandeln, geht dies dank der ConvertToTable -Methode in einem Streich:

Gruss
S. Widmer

Sub TestI()
TestTabelleErstellen
TextInTabelleKnvertieren
End Sub

Sub TestTabelleErstellen()
With Selection
.TypeText „Land“ & vbTab & „Hauptstadt“ & vbCrLf
.TypeText „Deutschland“ & vbTab & „Berlin“ & vbCrLf
.TypeText „Frankreich“ & vbTab & „Paris“ & vbCrLf
.TypeText „Italien“ & vbTab & „Rom“
End With
End Sub

Sub TextInTabelleKnvertieren()
Selection.WholeStory
Selection.ConvertToTable Separator:=wdSeparateByTabs, AutoFit:=True, Format:=wdTableFormatProfessional
Selection.HomeKey
End Sub

Hallo Silvia,

AutoFit:=True,

Vielen Dank, das war der Parameter, den ich suchte.
Leider funktioniert er nicht, wenn Tabellen verschiedener Breite nacheinander konvertiert werden. Er nimmt immer die Breite der größten vorhergehenden oder macht nur eine Spalte. Siehe auch die F1-Hilfe zu AutoFit.