für’s archiv, nachdem die kommunikation mit dem fragesteller in folge per email erfolgt ist.
folgende lösung hat sich offenbar als brauchbar für die problemstellung erwiesen:
Sub TabEinfügen()
Dim Anzahl As Integer
Dim Index As Integer
Dim Start As Long
Dim Ende As Long
Dim Bereich As Range
Application.ScreenUpdating = False
Documents.Add DocumentType:=wdNewBlankDocument
Selection.Paste
Anzahl = ActiveDocument.Tables.Count
If Anzahl > 0 Then
For Index = Anzahl To 1 Step -1
If Index = Anzahl Then
’ lösche alles danach
Start = ActiveDocument.Tables.Item(Index).Range.End
Ende = ActiveDocument.Range.End
Set Bereich = ActiveDocument.Range(Start, Ende)
Bereich.Delete
End If
If Index > 1 Then
’ lösche bis zur vorigen tabelle
Start = ActiveDocument.Tables.Item(Index - 1).Range.End
Ende = ActiveDocument.Tables.Item(Index).Range.Start
Set Bereich = ActiveDocument.Range(Start, Ende)
Bereich.Delete
ElseIf Index = 1 Then
’ lösche bis vor die tabelle
Start = ActiveDocument.Range.Start
Ende = ActiveDocument.Tables.Item(Index).Range.Start
If Ende > Start Then
Set Bereich = ActiveDocument.Range(Start, Ende)
Bereich.Delete
End If
End If
Next
ActiveDocument.Tables.Item(1).Range.Copy
End If
ActiveDocument.Close savechanges:=False
Selection.Paste
Application.ScreenUpdating = True
End Sub
das makro erstellt zuerst ein neues, leeres dokument und fügt den inhalt der zwischenablage ein. ist mind. eine tabelle vorhanden, wird alles vor der ersten tabelle, alles nach der letzten tabelle und alles zwischen den tabellen entfernt. anschließend wird der inhalt des dokuments in die zwischenablage kopiert und der alte inhalt überschrieben.
auf jeden fall wird das neue dokument anschließend geschlossen und der inhalt der zwischenablage ins aktuelle dokument an aktueller position eingefügt.
damit kann man dieses makro immer einsetzen - unabhängig davon, was in der zwischenablage drinnen ist.