Копирование строк текста, предшествующих таблице, в word с помощью VBA

#excel #vba #ms-word

#excel #vba #ms-word

Вопрос:

Я работаю через Excel и Word, используя VBA. В Excel у меня есть макрос для копирования всех таблиц из определенного файла Word с помощью макроса. На самом деле это работает отлично. Однако сейчас я пытаюсь скопировать также, скажем, 10 предыдущих строк текста таблицы, потому что эти строки могут содержать полезную информацию о содержимом таблицы. Я пытался найти способ получить позицию моей таблицы или скопировать текст из заданной позиции (строка, столбец, …), но я ничего не нашел.

Моя функция для получения всех таблиц из документа Word заключается в следующем :

 Private Function GetlisteTables(doc As Object) As Collection

    Dim tableau As Object
    Dim listeTableaux As New Collection

    For Each tableau In doc.Tables
        If tableau.Columns.Count > 4 Then

            On Error Resume Next
            listeTableaux.Add tableau
            
        End If
    Next tableau
    
    Set GetlisteTables = listeTableaux

End Function
  

Я думал, что мог бы использовать.Диапазон в моей таблице, но это фактически дает мне содержимое таблицы, и я не думаю, что это полезно в моем случае.
Есть ли какой-либо метод, который может помочь мне скопировать определенную часть (особенно прямо перед таблицей) текста в документе Word с использованием VBA?

Ответ №1:

У Paragraph объекта есть Previous метод, который может возвращать предыдущую единицу, как указано.

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

 With ActiveDocument.Tables(1).Range.Previous(Unit:=wdParagraph)
MsgBox .Start amp; ":" amp; .End
End With
  

Ссылка:

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

1. Спасибо за этот совет. Я просто хочу заметить, что это работает для vba Word, а не в макросе Excel. Вероятно, я выполню макрос из двух частей, один в Word, используя Paragraph объект, о котором вы упомянули, для извлечения текста, который я ищу, и мой основной макрос в Excel, который будет использовать то, что я получил из Word.