#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.