Я активно пытался решить эту проблему, так как я почти исключительно работал в Word VBA с большим количеством таблиц. Есть несколько способов решить эту проблему.
Самый простой - Закладки
Если у вас есть доступ и разрешение на изменение исходного документа, я бы просто добавил закладку в нужную таблицу или в нужный раздел Заголовок и / или заголовок. Затем вы можете сделать что-то вроде:
Dim thisTbl as Range
Set thisTbl = ActiveDocument.GoTo(what:=wdGoToBookmark, Name:="bookmark").Tables(1).Range
или
Dim thisTbl as Range
Set thisTbl = ActiveDocument.GoTo(what:=wdGoToBookmark, Name:="bookmark").Paragraphs(1).Range
Set thisTbl = thisTbl.GoTo(what:=wdGoToTable, which:=wdGoToNext).Tables(1).Range
Второй самый простой
Определить слово или фразу, которая задает c для этой таблицы и / или заголовок раздела и / или заголовок. Затем определите диапазон, выполните поиск по документу и установите диапазон, равный Find
результатам. Затем измените диапазон, как упомянуто выше, чтобы он выглядел примерно так:
Dim thisTbl as Range
Set thisTbl = ActiveDocument.Content
With thisTbl.Find
.ClearFormatting
.Text = "Specific to the table/header"
.Wrap = wdFindStop
.Execute
'If your find criteria is specific to the table, stop here. Otherwise, execute the following to move down a table:
If .Found = True Then
Set thisTbl = thisTbl.GoTo(what:=wdGoToTable, which:=wdGoToNext).Tables(1).Range
End If
End With
Для меня это звучит так: «C .1» - это фраза, которую вы должны искать, если можете: установить закладку.
Что касается перетекания, это не должно иметь значения, если вы устанавливаете диапазон, если таблица не разбита с wdColumnBreak
. Если это так, я предлагаю добавить чек для Range.Information
.
Импорт в Excel
Есть много хороших руководств о том, как это сделать. Самый простой способ - просто использовать Range.Copy
внутри Word и .Paste
внутри Excel.