Макрос таблицы копирования для Microsoft Word 2007 - PullRequest
0 голосов
/ 15 августа 2010

У меня есть простое требование в документе MS Office Word 2007.Мне нужен код позади макроса, который копирует таблицу (отформатированную) и вставляет ее каждый раз, когда я запускаю этот макрос.

Сценарий таков: - 1. Я скопирую отформатированную таблицу (с 7-8строк и 5-6 столбцов и т. д.) и сохраните их в макросе в виде кнопки или сочетания клавиш.

1.Когда бы я ни захотел или в каком-либо конкретном месте в том же текстовом документе, я установлю курсор и нажмите накнопка макроса (запустите наш макрос).Этот макрос должен вставлять одну и ту же отформатированную таблицу с тем же количеством строк, столбцов и стиля.

2.Я могу запустить этот макрос несколько раз, но он должен вставлять одну и ту же таблицу каждый раз.

Надеюськод будет в VB.

Я знаю, как создать макрос, назначить кнопку, сочетание клавиш, защиту и т. д. Мне нужен только код VB (или любой код) позади макроса, который может быть решением для вышеописанного сценария.

Извините за длинный пост, но я четко изложил свое требование.

Заранее спасибо ... Ура!Шилпа Шелк

1 Ответ

2 голосов
/ 15 августа 2010

Использовать макрос-рекордер.Вызовите рекордер, затем выполните шаги, чтобы скопировать и вставить таблицу, затем вы можете отредактировать ее, чтобы увидеть действительные инструкции макроса.Но обратите внимание, что средство записи макросов не сохраняет содержимое буфера обмена, поэтому разметка, которая создает таблицу, не будет сохранена вместе с макросом.Чтобы это работало, таблица должна существовать до запуска макроса.

Вот один из возможных методов:

Перед началом записи должны быть выполнены следующие условия:

  1. Ваша таблица должна находиться в начале документа после знака абзаца
  2. Ваш курсор должен находиться там, где вы хотите разместить новую таблицу

Затем включите запись и завершитеследующие шаги:

  1. Введите _table_goes_here_, где курсор находится
  2. Нажмите Ctrl + Home, чтобы перейти к началу документа (непосредственно перед основной таблицей
  3. Удерживая нажатой Shift и нажимая клавишу down arrow достаточное количество раз, пока не будет выбрана вся таблица,
  4. Нажмите Ctrl + C, чтобы скопировать таблицу
  5. Нажмите Ctrl + F, чтобы вызвать Findдиалоговое окно
  6. Введите текст местозаполнителя в поле «Найти» (_table_goes_here_) и нажмите «Найти далее»
  7. Когда текст заполнителя будет найден и выбран, нажмите клавишу «Esc», чтобы закрыть диалоговое окно поиска * 1032.*
  8. Нажмите Ctrl + V, чтобыскопируйте скопированную таблицу, которая заменит ваш текст-заполнитель
  9. Завершите запись макроса.

Правка - Второй подход
Другой подход - начать запись макроса изатем создайте таблицу с нуля, так что вам не понадобится уже существующая таблица для работы макроса.Когда вы сформировали и отформатировали запись конца таблицы и выполнили все необходимые шаги, чтобы разместить точно такую ​​же таблицу в любом месте.

Я только что протестировал второй подход, и он прекрасно работает.Вот код, сгенерированный регистратором для моего маленького теста:

Sub MakeTable()
'
' MakeTable Macro
' Macro recorded þ16þ/08þ/2010 by Majid Fouladpour
'
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=4, NumColumns:= _
        4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    With Selection.Tables(1)
        If .Style <> "Table Grid" Then
            .Style = "Table Grid"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
    With Selection.Tables(1)
        .Style = "Table Columns 4"
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
    Selection.TypeText Text:="Col one"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="Col two"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="Col three"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:="Col four"
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=3
    Selection.TypeText Text:="Item 1"
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.TypeText Text:="Item 2"
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.TypeText Text:="Item 3"
End Sub
...