Все ваши начальные тексты находятся в начале документа, потому что вы использовали objdoc.Content.InsertBefore
. objdoc.Content
- это range
, представляющий все содержимое документа.
Это упростит вам задачу, если вы поменяете порядок добавления вещей. Поскольку вы, очевидно, знаете, какой текст должен предшествовать / следовать за каждой таблицей, сделайте вставки в таком порядке, то есть
- Вставьте предыдущий текст
- Вставьте в свою таблицу
- Вставьте следующий текст
Как вы увидите из приведенного ниже кода, добавление контента по мере того, как вы go упрощаете работу.
ПРИМЕЧАНИЯ:
При вставке после таблицы в Word автоматически будет добавлен новый параграф, поэтому нет необходимости добавлять новый параграф для конечного текста таблицы.
Я добавил дополнительный пустой параграф между конечным текстом первой таблицы и начальный текст второго. Просто удалите эту строку, если она вам не нужна.
'Transactions
If WorksheetFunction.CountA(Range("Transactions")) >= 1 Then
Set Selection = ThisWorkbook.Worksheets("TF_Flags").ListObjects("Transactions").Range
Selection.Copy
'enter start line for table and add new para for table
objdoc.Paragraphs(1).Range.Text = " Transactions start."
objdoc.Paragraphs.Add
'Paste Table into MS Word
objdoc.Paragraphs.Last.Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
'enter end line for table
objdoc.Paragraphs.Last.Range.Text = " Transactions end."
'Autofit Table so it fits inside Word Document
objword.ActiveDocument.Tables(1).AutoFitBehavior (2)
'add small delay
Application.Wait (Now + TimeValue("0:00:02"))
'Clear The Clipboard
Application.CutCopyMode = False
End If
'Notes
If WorksheetFunction.CountA(Range("Notes")) >= 1 Then
Set Selection = ThisWorkbook.Worksheets("TF_Flags").ListObjects("Notes").Range
Selection.Copy
'add an empty para as a separator
objdoc.Paragraphs.Add
'add another para and enter start line for table
objdoc.Paragraphs.Add
objdoc.Paragraphs.Last.Range.Text = " Notes start."
'Paste Table into MS Word
objdoc.Paragraphs.Last.Range.PasteExcelTable _
LinkedToExcel:=False, _
WordFormatting:=False, _
RTF:=False
'enter end line for table
objdoc.Paragraphs.Last.Range.Text = " Notes end."
'Autofit Table so it fits inside Word Document
objword.ActiveDocument.Tables(2).AutoFitBehavior (2)
Application.Wait (Now + TimeValue("0:00:02"))
'Clear The Clipboard
Application.CutCopyMode = False
End If