Можно ли изменить поведение команды «Вставить таблицу» в Word 2007? - PullRequest
4 голосов
/ 08 августа 2011

В Word 2007 на вкладке ленты «Вставка» имеется группа «Таблицы» с одной раскрывающейся кнопкой (помеченной как «Таблица»).

Раскрывающийся список содержит различные пункты меню, такие как «Вставить таблицу ... »,« Рисовать таблицу »и т. Д. Однако в верхней части раскрывающегося списка находится сетка 10x8, которую можно использовать для быстрого выбора размера новой таблицы с помощью мыши.(Первый вопрос: какого чёрта эта штука называется? !!).

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

Я знаю, как переопределить команду «Вставить таблицу ...», но не могу понять, как переопределитьПоведение «виджета».Можно ли это сделать?

1 Ответ

3 голосов
/ 14 августа 2011

Прежде чем читать дальше (потому что это будет долго), я хочу сказать, что я не решил эту проблему. Однако, пытаясь решить - а затем обойти - эту проблему, я обнаружил довольно много вещей, которые я записываю здесь в надежде, что они помогут кому-то другому найти решение.

Пытаясь определить, что контролирует сетку 10x8, которую можно использовать для вставки таблицы, я обнаружил макрос, указанный в командах Word с именем «TableInsertGeneral».

TableInsertGeneral listed in Word Macros dialog box

Этот макрос, согласно Сюзанне С. Барнхилл, восстановит сетку, если эта функция перестает функционировать в более ранних версиях Word ( Вставить раскрывающийся список таблиц отсутствует ). Макрос, как он существует в Word 2007/2010, не может быть выполнен из диалогового окна макроса кнопка «Выполнить». Двойной щелчок по команде закрывает диалоговое окно, но открыто ничего не делает. Я также попытался перехватить его функцию, создав подпрограмму VBA с именем TableInsertGeneral, но код, который я поместил в эту подпрограмму, не был выполнен, когда я получил доступ к сетке. Однако, основываясь на моих исследованиях, я считаю, что макрос TableInsertGeneral имеет некоторое отношение к отображению сетки 10x8.

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

Сначала я скачал несколько инструментов:

Использование редактора пользовательского интерфейса для Microsoft Office (который позволяет редактировать файл customui.xml внутри документа или шаблона Word 2007 без необходимости создавать структуры папок или поддерживать отношения между файлами XML). Я открыл шаблон и сохранил этот код. в файле:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
  <tabs>
    <tab idMso="TabInsert">
      <group idMso="GroupInsertTables" visible="false" />
      <group id="CustomGroupInsertTables" label="Tables" insertBeforeMso="GroupInsertIllustrations">
       <gallery id="CustomTableInsertGallery"
        label="Table"
        imageMso="TableInsertGallery" 
        size="large"
        columns="1" 
        rows="4"
        screentip="Table"
        supertip="Insert or draw a table into the document."
        keytip="T" 
        onAction="RibbonControl.galleryOnAction" >
        <item id="GridMessage" label="Draw Table Via Grid Has Been Removed" imageMso="TablesGallery" 
         supertip="Provides information on why this template has different Ribbon controls."/>  
        <button idMso="TableInsertDialogWord" />
        <button idMso="ConvertTextToTable" />
        <button idMso="TableExcelSpreadsheetInsert" />
       </gallery>
     </group>
    </tab>
  </tabs>
</ribbon>
</customUI>

Это успешно скрыло оригинальную галерею таблиц и заменило ее на некоторые функциональные возможности исходной галереи таблиц. Сетка 10x8 исчезла, но я не смог восстановить кнопку-переключатель Draw Table и галерею Quick Tables. Насколько я могу судить, схема XML не позволяет встраивать ни одну из них (которые существуют в готовой версии Word 2007) в существующую галерею. Поскольку я не люблю удалять функциональность (даже для этого частичного решения, которое, как я думал, не будет использоваться), я добавил кнопку, привязанную к окну сообщения, в качестве первого элемента в перестроенной галерее:

Rebuilt Tables Gallery

Код для подключения новой кнопки «Рисовать таблицу через сетку был удален» был помещен в модуль с именем RibbonControl:

Sub GalleryOnAction(Control As IRibbonControl, selectedID As String, selectedIndex As Integer)

If Documents.Count = 0 Then
 MsgBox "This control is disabled when there is no active document."
 Exit Sub
End If

Select Case Control.id
  Case "CustomTableInsertGallery"
    Select Case selectedIndex
      Case 0
        MsgBox "Explain changes to Ribbon interface here."
      Case Else
        'Do Nothing
    End Select 
End Select
End Sub

Я не ожидаю, что кто-то будет использовать это частичное решение, однако, если может быть достигнуто средство для восстановления двух отсутствующих элементов управления, это может быть хорошим обходным путем. Кстати, я адаптировал большую часть этого с сайта Грега Макси:

Настройка ленты

Если вы прочитали это далеко, спасибо! И я желаю вам большего успеха в ваших собственных попытках.

...