2016-08-31 3 views
0

Ich zielen darauf ab, einen bestimmten Text in einem MS-Word-Dokument durch ein Textfeld zu ersetzen. Dieses Textfeld muss den ersetzten Text enthalten. Das Textfeld sollte an der gleichen Position wie der ersetzte Text erscheinen und der folgende Inhalt muss das Textfeld umschließen.Word VBA Makro Text finden und seine Position bekommen, um es durch ein Textfeld zu ersetzen

Mit dem folgenden Code kann ich die Ersetzung des Textes durch ein Textfeld und mit dem ersetzten Text im Textfeld erreichen, aber das Textfeld ist immer an der gleichen Stelle.

Was ich jetzt brauche, ist die Möglichkeit, die Position eines gefundenen Textes zu erhalten, um es für das Textfeld zu verwenden, um den gefundenen Text zu ersetzen. :)

Mein Code-Schnipsel:

positionLeft = 50 /* here I need the left position of the found text */ 
positionTop = 50 /* and here the top position */ 

With ActiveDocument.Range.find 
      .Forward = True 
      .Wrap = wdFindStop 
      .Text = TextToReplace 
      .Execute 
      If .Found = True Then 
       Dim Box As Shape 
       Set Box = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, positionToLeft, positionToRight, 100, 100) 
       Box.TextFrame.textRange.Text = TextToReplace 
       .Parent = "" 
      End If 
End With 

Ist es sogar möglich, die absolute linke und obere Position eines Textes im Word-Dokument zu bekommen? Und wenn ja, wie kann ich das schaffen?

Antwort

0

Sie können Selection.Information (wdVerticalPositionRelativeToPage), Selection.Information (wdHorizontalPositionRelativeToPage) verwenden, um die Koordinaten zu finden, aber es ist nur relativ zu dieser Seite.

Ich habe nicht getestet, aber wenn Sie

  .Select 
      x = Selection.Information(wdVerticalPositionRelativeToPage) 
      y = Selection.Information(wdHorizontalPositionRelativeToPage) 
      Set Box = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,x, y, 100, 100) 

hinzufügen sollte es funktionieren.

Verwandte Themen