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.
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.
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.
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
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
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
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.