Прежде чем вы начнете читать (потому что это будет долго), я хочу сказать, что я не решил эту проблему. Однако в своих попытках решить - а затем обойти - эту проблему я обнаружил довольно много вещей, которые я записываю здесь в надежде, что они помогут кому-то еще найти решение.
Пытаясь определить, какие элементы управления сеткой 10x8 можно использовать для вставки таблицы, я обнаружил макрос, указанный в командах Word под названием «TableInsertGeneral».
![TableInsertGeneral, указанный в диалоговом окне макросов Word](https://i.stack.imgur.com/bYuXA.png)
Этот макрос, по словам Сюзанны С. Барнхилл, восстановит сетку, если эта функция перестанет работать в более ранних версиях 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) в существующую галерею. Поскольку мне не нравится удалять функциональность (даже для этого частичного решения, которое, как я думал, не будет использоваться), я добавил кнопку, привязанную к окну сообщения, в качестве первого элемента в восстановленной галерее:
![Восстановленная галерея таблиц](https://i.stack.imgur.com/eOzuz.png)
Код для подключения новой кнопки «Draw Table Via Grid Has Been Removed» был помещен в модуль 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
Я не ожидаю, что кто-то будет использовать это частичное решение, однако, если удастся найти средство для восстановления двух отсутствующих элементов управления, это может быть хорошим обходным путем. Кстати, большую часть этого я адаптировал с веб-сайта Грега Макси:
Настройка ленты
Если вы дочитали до этого места, спасибо! И желаю вам большего успеха в ваших собственных попытках.
person
joeschwa
schedule
14.08.2011