Вставить текст в определенное место в документе

#excel #vba #ms-word

#excel #vba #ms-word

Вопрос:

Когда я вставляю данные в закладку, они переходят в начало строки.

Какое свойство необходимо установить, чтобы вставить текст в середину абзаца?

Данные скопированы из Excel,
пробовал до сих пор:
копировать диапазон и вставлять
Копировать текст из значения и вставлять специальная
вставка плавает везде, но не в закладке.

 If wDoc.Bookmarks.Count = 0 Then GoTo BookmarkMissing

    For i = 1 To wDoc.Bookmarks.Count
        If wDoc.Bookmarks(i).Name = sBookmarkName Then
            Set wdRange = wDoc.Bookmarks(i).Range
            Let bBookmarkFound = True
        End If
    Next i
    If Not bBookmarkFound Then GoTo BookmarkMissing
Else
    Set wdRange = wDoc.Range
End If
    
MyData.SetText rngToSend.Value2
MyData.PutInClipboard

On Error Resume Next

On Error GoTo 0

'rngToSend.Copy

'wdRange.PasteSpecial Placement:=wdFloatOverText, DataType:=2
wdRange.InsertAfter
wdRange.Tables(1).ConvertToText Separator:=" "
'wdRange.PasteSpecial Placement:=wdFloatOverText, DataType:=2
'wdRange.PasteSpecial Placement:=wdInLine
  

Комментарии:

1. Что вы подразумеваете под «всегда переходите к началу строки»? Пожалуйста, используйте кнопку редактирования под вашим вопросом и добавьте скриншот, показывающий, куда идет текст и где он должен быть. Пожалуйста, убедитесь, что закладка видна.

Ответ №1:

Ваш код может быть значительно упрощен. Нет необходимости перебирать закладки, чтобы найти, существует ли тот, который вам нужен, поскольку объектная модель имеет метод для этого.

Итак, этот код:

   If wdoc.Bookmarks.Count = 0 Then GoTo BookmarkMissing
  For I = 1 To wdoc.Bookmarks.Count
      If wdoc.Bookmarks(I).name = sBookmarkName Then
          Set wdRange = wdoc.Bookmarks(I).Range
          Let bBookmarkFound = True
      End If
  Next I
  If Not bBookmarkFound Then GoTo BookmarkMissing
  

Может быть заменен этим

   If wdoc.Bookmarks.Exists(sBookmarkName) Then
    wdoc.Bookmarks(sBookmarkName).Range.text = rngToSend.Value2
  Else
    GoTo BookmarkMissing
  End If
  

Ответ №2:

Поскольку вы перемещаете обычный текст, буфер обмена не требуется.

 wDoc.Bookmarks(i).Range.Text = rngToSend.Value2
  

Комментарии:

1. Спасибо за совет. Однако настройка свойств текста по-прежнему вводит значение в начале строки.

2. Тогда вы, вероятно, создаете закладку в неправильном месте. Вы можете использовать Файл> Параметры> Дополнительно> Показать содержимое документа> Показать закладки , чтобы открыть закладки, они выглядят как серые квадратные скобки.

Ответ №3:

Спасибо вам, ребята, за вашу помощь. Однако у меня была ошибка, одна старая строка кода (не видимая в моем сообщении) все еще вставляла значение в виде диапазона Excel и вставляла таблицу вместо текста.

Итак, теперь решено