Используйте Word Macro / VBA для копирования таблиц из одного документа Word в другой документ Word - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в VBA и хотел бы обратиться за помощью по созданию макроса Word для копирования определенных таблиц содержимого из документа Microsoft Office 365 Word A в документ Microsoft Office 365 Word B.

  1. Документ A имеет по меньшей мере 1 таблицу содержимого, но может содержать до 20 таблиц содержимого. Другими словами, верхняя граница является динамической c.

1.1. Каждая таблица содержимого имеет две строки и четыре столбца:

1.1.1, первая строка имеет четыре ячейки столбца,

1.1.2. Во втором ряду ячейки первого и второго столбцов объединены в одну ячейку, и, следовательно, во втором ряду три столбца.

Документ B является пустым шаблоном. Он имеет некоторый предопределенный текстовый контент, а затем 20 пустых таблиц контента. Структура таблицы содержимого в документе B такая же, как и в документе A.

Макрос должен сделать следующее:

3.1 Копировать таблицы содержимого из документа A в документ B в том же последовательном порядке.

3.2 Для каждой таблицы содержимого в документе A скопируйте, как показано ниже:

3.2.1 Скопируйте первую строку как есть первая строка соответствующей таблицы содержимого в документе B.

3.2.2 Скопируйте вторую строку, как показано ниже:

3.2.2.1 Скопируйте первый столбец / ячейку второй строки в документе A в Первый столбец / ячейка второй строки в Документе B.

3.2.2.2 Скопируйте третий столбец / ячейку второй строки в Документе A во второй столбец / ячейку второй строки в Документе B. Вот и все.

Я попытался записать макрос, чтобы выполнить вышеописанное, но он не сработал.

Пожалуйста, сообщите и помогите.

1 Ответ

0 голосов
/ 06 апреля 2020

Ваш документ B, который вы (возможно, ошибочно) называете шаблоном, не пустой - он имеет содержание. Что касается репликации таблицы, попробуйте:

Sub Demo()
Application.ScreenUpdating = False
Dim DocSrc As Document, DocTgt As Document, t As Long
With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
  .Title = "Select the source file"
  .AllowMultiSelect = False
  If .Show = -1 Then
    Set DocSrc = Documents.Open(.SelectedItems(1), ReadOnly:=True, AddToRecentFiles:=False)
  Else
    MsgBox "No source file selected. Exiting", vbExclamation
    GoTo ErrExit
  End If
End With
With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
  .Title = "Select the target file"
  .AllowMultiSelect = False
  If .Show = -1 Then
    Set DocTgt = Documents.Open(.SelectedItems(1), ReadOnly:=False, AddToRecentFiles:=False)
  Else
    MsgBox "No target file selected. Exiting", vbExclamation
    DocSrc.Close SaveChanges:=False
    GoTo ErrExit
  End If
End With
With DocSrc
  For t = 1 To .Tables.Count
    DocTgt.Tables(t).Range.FormattedText = .Tables(t).Range.FormattedText
    DocTgt.Tables(t).Cell(2, 3).Range.Text = vbNullString
    DocTgt.Tables(t).Cell(2, 4).Range.Text = vbNullString
  Next
  .Close False
End With
DocTgt.Activate
ErrExit:
Set DocSrc = Nothing: Set DocTgt = Nothing
Application.ScreenUpdating = True
End Sub
...