2016-08-31 2 views
0

Я хочу заменить определенный текст в текстовом документе ms текстовым полем. Это текстовое поле должно содержать замененный текст. Текстовое поле должно появляться в той же позиции, что и замененный текст, и следующее содержимое должно обтекать текстовое поле.Word vba macro найти текст и получить его положение, чтобы заменить его текстовым полем

С помощью следующего кода я могу выполнить замену текста текстовым полем и замененным текстом в текстовом поле, но текстовое поле всегда находится на том же месте.

Теперь мне нужна возможность получить позицию найденного текста, чтобы использовать его для текстового поля, чтобы заменить найденный текст. :)

Мой фрагмент кода:

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 

Возможно ли это, чтобы получить абсолютную левую и верхнюю позицию текста в документе слова? И если да, как я могу это сделать?

ответ

0

Вы можете использовать Selection.Information (wdVerticalPositionRelativeToPage), Selection.Information (wdHorizontalPositionRelativeToPage), чтобы найти координаты, но это просто относительно этой страницы.

Я не проверял это, но если добавить

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

Он должен работать.

Смежные вопросы