none
Word: Text VOR und NICHT IN Textmarke einfügen RRS feed

  • Frage

  • Hallo,

    die Dokumentation zu <Range>.InsertBefore <String> gibt ausdrücklich an, dass sie, wenn man diese Methode auf eine Textmarke anwendet, selbige um den Inhalt erweitert.
    Genau diesen Effekt will ich aber nicht haben, da somit auch Verweise auf diese Textmarke bei Aktualisierung mit [F9] dann auch um diesen Inhalt erweitert werden.

    Ich habe hier auch schon so ziemlich alle Kombinationen von .InsertParagraphBefore/.InsertParagraphAfter und .InsertBefore/.InsertAfter ausprobiert und immer wieder landet mein eingefügter Text im Bookmark-Bereich.

    Zur Veranschaulichung: Meine Routine klappert alle Images ab und fügt unterhalb einen Text ein.
    Der einzufügenden Text ist immer ein eigener Absatz mit einer spezieller Formatvorlage.
    Das sieht dann etwa wie folgt aus:

    Set rng = shp.Range  'shp ist das Inlienshape zu besagtem Image
    rng.Move wdParagraph, 1
    rng.Collapse wdCollapseStart
    Set para = rng.Paragraphs(1)
    If para.Style = sStyle Then 'sStyle = Name einer spezielle FV
          para.Range.Delete   'ggf. alte öschen
    End If
    rng.InsertParagraphAfter
    rng.Collapse wdCollapseStart
    rng.InsertBefore <String>
    rng.Paragraphs(1).Range.Style = sStyle

    Unterhalb der Abbildung kann eine Textmarke folgen, muss aber nicht.
    Wie kann ich vermeiden, dass mein <String> im Bereich der Textmarke landet?
    Schon mal vielen Dank für gute Hinweise.

    Grüße aus Köln am Rhein - Klaus Trapp

    Dienstag, 27. Dezember 2016 19:37

Antworten

  • Meine Routine klappert alle Images ab und fügt unterhalb einen Text ein.

    Wie kann ich vermeiden, dass mein <String> im Bereich der Textmarke landet?

    Scheinbar gar nicht. Aber man kann recht einfach diesen Fall erkennen und die Textmarke korrigieren.

    Andreas.

    Sub Test()
      Dim R As Range
      Dim B As Bookmark
      Set R = ActiveDocument.InlineShapes(1).Range
      R.Collapse wdCollapseEnd
      R.InsertAfter "qwe"
      For Each B In R.Bookmarks
        B.Start = R.End
      Next
    End Sub

    • Als Antwort markiert Klaus Trapp Mittwoch, 28. Dezember 2016 15:14
    Mittwoch, 28. Dezember 2016 06:42

Alle Antworten

  • Meine Routine klappert alle Images ab und fügt unterhalb einen Text ein.

    Wie kann ich vermeiden, dass mein <String> im Bereich der Textmarke landet?

    Scheinbar gar nicht. Aber man kann recht einfach diesen Fall erkennen und die Textmarke korrigieren.

    Andreas.

    Sub Test()
      Dim R As Range
      Dim B As Bookmark
      Set R = ActiveDocument.InlineShapes(1).Range
      R.Collapse wdCollapseEnd
      R.InsertAfter "qwe"
      For Each B In R.Bookmarks
        B.Start = R.End
      Next
    End Sub

    • Als Antwort markiert Klaus Trapp Mittwoch, 28. Dezember 2016 15:14
    Mittwoch, 28. Dezember 2016 06:42
  • Danke, das war genau der richtige Weg!
    Musste allerdings erst noch
     .ShowHiddenBookmarks = True
    setzen.

    Grüße aus Köln am Rhein - Klaus Trapp

    Mittwoch, 28. Dezember 2016 15:18