Прежде чем читать дальше (потому что это будет долго), я хочу сказать, что я не решил эту проблему. Однако, пытаясь решить - а затем обойти - эту проблему, я обнаружил довольно много вещей, которые я записываю здесь в надежде, что они помогут кому-то другому найти решение.
Пытаясь определить, что контролирует сетку 10x8, которую можно использовать для вставки таблицы, я обнаружил макрос, указанный в командах Word с именем «TableInsertGeneral».
Этот макрос, согласно Сюзанне С. Барнхилл, восстановит сетку, если эта функция перестает функционировать в более ранних версиях 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) в существующую галерею. Поскольку я не люблю удалять функциональность (даже для этого частичного решения, которое, как я думал, не будет использоваться), я добавил кнопку, привязанную к окну сообщения, в качестве первого элемента в перестроенной галерее:
Код для подключения новой кнопки «Рисовать таблицу через сетку был удален» был помещен в модуль с именем 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
Я не ожидаю, что кто-то будет использовать это частичное решение, однако, если может быть достигнуто средство для восстановления двух отсутствующих элементов управления, это может быть хорошим обходным путем. Кстати, я адаптировал большую часть этого с сайта Грега Макси:
Настройка ленты
Если вы прочитали это далеко, спасибо! И я желаю вам большего успеха в ваших собственных попытках.