Dietmar Feuerer
vor 18 Jahren
Hallo,
ich muss aus einer Tabelle überflüssige Leerzeichen bzw. Absatzmarken
und/oder Tabstops entfernen. Mein Problem ist, dass es zum Beispiel vor oder
nach einem Tabstop mehrere zu entfernende Leerzeichen gibt. Daher müßte das
Makro bis zur Anweisung ActiveDokument.Range.select sich mehrmals wiederholen
oder so lange arbeiten bis nichts mehr zu ersetzen geht. Wie kann ich die
Wiederholung steuern?
Kann der Code noch verbessert werden, besonders nach
ActiveDokument.Range.select, da hier nur der Recorder aufgezeichnet hat?
Code:
Sub tabelle()
With ActiveDocument.Range.Find
.Text = "^t "
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = " ^t"
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = "^t^a"
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = "^t:^t"
.Replacement.Text = ":"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = "^a^t"
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = "^a "
.Replacement.Text = "^a"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = " ^a"
.Replacement.Text = "^a"
.Execute Replace:=wdReplaceAll
End With
ActiveDocument.Range.Select
Selection.ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=9, _
NumRows:=14, Format:=wdTableFormatNone, ApplyBorders:=True, ApplyShading _
:=True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
AutoFit:=False
Selection.Cells.HeightRule = wdRowHeightAuto
With Selection.Rows
.Alignment = wdAlignRowLeft
.AllowBreakAcrossPages = True
.SetLeftIndent LeftIndent:=CentimetersToPoints(0), RulerStyle:= _
wdAdjustNone
End With
Selection.Cells.AutoFit
End Sub
Danke für eure Hilfe!
Gruß Dietmar
ich muss aus einer Tabelle überflüssige Leerzeichen bzw. Absatzmarken
und/oder Tabstops entfernen. Mein Problem ist, dass es zum Beispiel vor oder
nach einem Tabstop mehrere zu entfernende Leerzeichen gibt. Daher müßte das
Makro bis zur Anweisung ActiveDokument.Range.select sich mehrmals wiederholen
oder so lange arbeiten bis nichts mehr zu ersetzen geht. Wie kann ich die
Wiederholung steuern?
Kann der Code noch verbessert werden, besonders nach
ActiveDokument.Range.select, da hier nur der Recorder aufgezeichnet hat?
Code:
Sub tabelle()
With ActiveDocument.Range.Find
.Text = "^t "
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = " ^t"
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = "^t^a"
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = "^t:^t"
.Replacement.Text = ":"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = "^a^t"
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = "^a "
.Replacement.Text = "^a"
.Execute Replace:=wdReplaceAll
End With
With ActiveDocument.Range.Find
.Text = " ^a"
.Replacement.Text = "^a"
.Execute Replace:=wdReplaceAll
End With
ActiveDocument.Range.Select
Selection.ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=9, _
NumRows:=14, Format:=wdTableFormatNone, ApplyBorders:=True, ApplyShading _
:=True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
AutoFit:=False
Selection.Cells.HeightRule = wdRowHeightAuto
With Selection.Rows
.Alignment = wdAlignRowLeft
.AllowBreakAcrossPages = True
.SetLeftIndent LeftIndent:=CentimetersToPoints(0), RulerStyle:= _
wdAdjustNone
End With
Selection.Cells.AutoFit
End Sub
Danke für eure Hilfe!
Gruß Dietmar