: an bestimmter Stelle einfügen

Hallo,

ich habe ein Makro, dass mir im Word 2003 einen Text bearbeitet. Leider fehlt mir noch ein Arbeitsschritt, den ich bisher immer umständlich per Hand eingearbeitet habe:

Das Dokument besteht aus Text und Zahlen die -um Spalten zu erzeugen durch Tabstopps- getrennt sind. Vor dem dem 23-ten Tabstopp müsste in jeder Zeile (die Zeilenanzahl variert) ein : eingefügt werden.

Gibt es eine Möglichkeit diesen Arbeitsschritt in das Makro zu integrieren?? Das Makro schaut bis jetzt so aus (hab ich von meinem Vorgänger übernommen, wer das ursprünglich geschrieben hat, weiß ich leider nicht):

Sub GrosseTabelleAnpassen()

’ Zeilen Löschen
Selection.HomeKey wdLine
Selection.MoveDown wdLine, 2, wdExtend
Selection.Delete wdCharacter, 1

’ Selection.MoveDown wdScreen, 1
Selection.EndKey Unit:=wdStory
Selection.EndKey Unit:=wdLine
Selection.HomeKey wdLine, wdExtend
Selection.Delete wdCharacter, 1
Selection.TypeBackspace

’ Tabelle selektieren
Selection.WholeStory

’ Zeichensatz
With Selection.Font
.Name = „Arial“
.Size = 7
.Bold = True
.Italic = False
.Underline = wdUnderlineNone
.UnderlineColor = wdColorAutomatic
.StrikeThrough = False
.DoubleStrikeThrough = False
.Outline = False
.Emboss = False
.Shadow = False
.Hidden = False
.SmallCaps = False
.AllCaps = False
.Color = wdColorBlack
.Engrave = False
.Superscript = False
.Subscript = False
.Spacing = 0
.Scaling = 100
.Position = 0
.Kerning = 0
.Animation = wdAnimationNone
End With

’ Zeilenabstand, …
With Selection.ParagraphFormat
.LeftIndent = CentimetersToPoints(0)
.RightIndent = CentimetersToPoints(0)
.SpaceBeforeAuto = False
.SpaceAfter = 0
.SpaceAfterAuto = False
.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 7.75
.Alignment = wdAlignParagraphLeft
.WidowControl = False
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = CentimetersToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
.CharacterUnitLeftIndent = 0
.CharacterUnitRightIndent = 0
.CharacterUnitFirstLineIndent = 0
.LineUnitAfter = 0
End With

’ Tabulatoren löschen
Selection.ParagraphFormat.TabStops.ClearAll

’ Neue Tabulatoren setzen
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(0.5), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(0.7), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(3.5), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(4), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(4.5), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(5), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(5.6), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(5.65), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(6.25), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces

Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(6.75), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(7.25), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(7.75), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(8.25), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(8.75), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(9.6), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(9.65), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(10.25), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(11.25), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(11.75), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(12.25), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(12.75), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces

Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(13.6), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces '!!!
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(13.65), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(14.25), Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces

’ Tabelle selektieren
Selection.WholeStory
Selection.Copy

End Sub

Da ich leider von VBA fast gar keine Ahnung habe, schon mal Danke für jegliche Hilfe.

Grüße
Yogi

Das Dokument besteht aus Text und Zahlen die -um Spalten zu
erzeugen durch Tabstopps- getrennt sind. Vor dem dem 23-ten
Tabstopp müsste in jeder Zeile (die Zeilenanzahl variert) ein

eingefügt werden.

Gibt es eine Möglichkeit diesen Arbeitsschritt in das Makro zu
integrieren?? Das Makro schaut bis jetzt so aus (hab ich von
meinem Vorgänger übernommen, wer das ursprünglich geschrieben
hat, weiß ich leider nicht):

Hi Yogi,

kannst du mal z.B. per FAQ:2861 eine Beispiel-Doc hochladen wie das Dokument aussieht bevor das Makro darüber war.

Gruß
Reinhard

Hallo,

ich hoff mal, dass das jetzt funktioniert hat:

http://www.badongo.com/file/10494733

die Datei heißt ursprungsdoc.rtf

bei der auswärtstabelle fehlen leider schon in diesem Dokument die Doppelpunkte. Bei der Heimtabelle und der Gesamttabelle ist das Torverhältniss richtig mit Doppelpunkten dargestellt.

Vielen Dank schon mal.

LG Yogi

die Datei heißt ursprungsdoc.rtf

bei der auswärtstabelle fehlen leider schon in diesem Dokument
die Doppelpunkte. Bei der Heimtabelle und der Gesamttabelle
ist das Torverhältniss richtig mit Doppelpunkten dargestellt.

Hi Yogi,

für solche Tabellen würde ich Excel oder OO-Calc nehmen. Die Vorteile von ord liegen nicht im Tabellenhandling. Für Excel hätte ich dir schon längst waa gebastelt mit Doppelpunkten.

Word-Vba ist ungewohnt für mich, da dauert es mehrfach länger :smile:

Gemacht habe ich am Code wenig, nur ein bißchen frisiert, damit mich die ganzen Selektionen nicht so erschrecken.

Option Explicit
'
Sub GrosseTabelleAnpassen()
' Zeilen Löschen
With Selection
 .HomeKey wdLine
 .MoveDown wdLine, 2, wdExtend
 .Delete wdCharacter, 1
 .EndKey Unit:=wdStory
 .EndKey Unit:=wdLine
 .HomeKey wdLine, wdExtend
 .Delete wdCharacter, 1
 .TypeBackspace
 ' Tabelle selektieren
 .WholeStory
 ' Zeichensatz
 With .Font
 .Name = "Arial"
 .Size = 7
 .Bold = True
 .Italic = False
 .Underline = wdUnderlineNone
 .UnderlineColor = wdColorAutomatic
 .StrikeThrough = False
 .DoubleStrikeThrough = False
 .Outline = False
 .Emboss = False
 .Shadow = False
 .Hidden = False
 .SmallCaps = False
 .AllCaps = False
 .Color = wdColorBlack
 .Engrave = False
 .Superscript = False
 .Subscript = False
 .Spacing = 0
 .Scaling = 100
 .Position = 0
 .Kerning = 0
 .Animation = wdAnimationNone
 End With
 ' Zeilenabstand, ...
 With .ParagraphFormat
 .LeftIndent = CentimetersToPoints(0)
 .RightIndent = CentimetersToPoints(0)
 .SpaceBeforeAuto = False
 .SpaceAfter = 0
 .SpaceAfterAuto = False
 .LineSpacingRule = wdLineSpaceExactly
 .LineSpacing = 7.75
 .Alignment = wdAlignParagraphLeft
 .WidowControl = False
 .KeepWithNext = False
 .KeepTogether = False
 .PageBreakBefore = False
 .NoLineNumber = False
 .Hyphenation = True
 .FirstLineIndent = CentimetersToPoints(0)
 .OutlineLevel = wdOutlineLevelBodyText
 .CharacterUnitLeftIndent = 0
 .CharacterUnitRightIndent = 0
 .CharacterUnitFirstLineIndent = 0
 .LineUnitAfter = 0
 End With
 ' Tabulatoren löschen
 With .ParagraphFormat.TabStops
 .ClearAll
 ' Neue Tabulatoren setzen
 .Add Position:=CentimetersToPoints(0.5), Alignment:=2, Leader:=0
 .Add Position:=CentimetersToPoints(0.7), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(3.5), Alignment:=2, Leader:=0
 .Add Position:=CentimetersToPoints(4#), Alignment:=2, Leader:=0
 .Add Position:=CentimetersToPoints(4.5), Alignment:=2, Leader:=0
 .Add Position:=CentimetersToPoints(5#), Alignment:=2, Leader:=0
 .Add Position:=CentimetersToPoints(5.6), Alignment:=2, Leader:=0
 .Add Position:=CentimetersToPoints(5.65), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(6.25), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(6.75), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(7.25), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(7.75), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(8.25), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(8.75), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(9.6), Alignment:=2, Leader:=0
 .Add Position:=CentimetersToPoints(9.65), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(10.25), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(11.25), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(11.75), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(12.25), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(12.75), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(13.6), Alignment:=2, Leader:=0 '!!!
 .Add Position:=CentimetersToPoints(13.65), Alignment:=0, Leader:=0
 .Add Position:=CentimetersToPoints(14.25), Alignment:=0, Leader:=0
 End With
 ' Tabelle selektieren
 .WholeStory
 .Copy
End With
End Sub

Gruß
Reinhard

Hallo,

danke schon mals fürs rumtüffteln.

Leider kann das Programm aus dem die Tabelle kommt nur ins rtf Format exportieren. Es funktioniert zwar ansonsten ganz gut aber beim Export werden leider die hinteren Doppelpunkte gefressen.

Viele Grüße Yogi

Hallo Yogi,

Leider kann das Programm aus dem die Tabelle kommt nur ins rtf
Format exportieren.

Welches Programm? In welches Format kann es noch exportieren?

Es funktioniert zwar ansonsten ganz gut
aber beim Export werden leider die hinteren Doppelpunkte
gefressen.

Irgedenwas ist in der entstandenen rtf marode. Beim 10ten und 18 ten Verein werden die Spalten „verrückt“ wenn man die .rtf in Word lädt und als .txt abspeichert.

Warum soll eigentlich die Überschriftenzeile in deinem Code eliminiert werden?

Die Einfügung des Doppelpunktes ist, auch wenn’s vielleicht noch nicht so ganz danach aussieht :smile:, gar nicht mehr weit weg, gibt da nur noch ein winziges Codeproblem, deshalb stelle ich gleich mal eine Anfrage hier.
Auch wenns Excel-Vba-Code ist, das spielt keine Rolle, kann man später auch locker in Word-Vba benutzen um dein problem zu lösen.

Gruß
Reinhard