Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se muestra cómo usar las clases del SDK de Open XML para Office para agregar mediante programación una interfaz de usuario personalizada, modificando la cinta de opciones, a una hoja de cálculo de Microsoft Excel. Contiene un método de ejemplo AddCustomUI
para ilustrar esta tarea.
Crear una IU personalizada
Antes de usar el SDK de Open XML para crear una personalización de cinta de opciones en un libro de Excel, primero debe crear el contenido de personalización. Este tema no describe el XML necesario para crear una cinta de opciones personalizada. Además, le resultará mucho más fácil usar la cinta de opciones Designer en Visual Studio para crear la personalización automáticamente. Para obtener más información sobre cómo personalizar la cinta de opciones mediante la cinta de opciones de Visual Studio Designer, vea Ribbon Designer y Walkthrough: Creating a Custom Tab by Using the Ribbon Designer.
A los efectos de esta demostración, necesitará un archivo XML que contenga una personalización; el siguiente código proporciona una personalización sencilla. Los ejemplos siguientes son las cadenas xml usadas en este ejemplo. Este contenido XML describe una personalización de la cinta de opciones que incluye un botón con la etiqueta "Click Me!" en un grupo denominado Group1 en la Add-Ins
pestaña en Excel. Al hacer clic en el botón, intenta ejecutar una macro denominada SampleMacro
en el libro host.
string xml =
@"<customUI xmlns=""http://schemas.microsoft.com/office/2006/01/customui"">
<ribbon>
<tabs>
<tab idMso=""TabAddIns"">
<group id=""Group1"" label=""Group1"">
<button id=""Button1"" label=""Click Me!"" showImage=""false"" onAction=""SampleMacro""/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>"
Crear la macro
Para esta demostración, la cinta de opciones personalizada incluye un botón que trata de ejecutar una macro en el libro host. Para completar la demostración, debe crear una macro en un libro de ejemplo para la invitación a hacer clic del botón.
Cree un nuevo libro de trabajo.
Pulse Alt+F11 para abrir el editor de Visual Basic.
En la pestaña Insertar, haga clic en Módulo para crear un módulo.
Agregue código como el siguiente al nuevo módulo.
Sub SampleMacro(button As IRibbonControl) MsgBox "You Clicked?" End Sub
Guarde el libro como un libro habilitado para macros de Excel de nombre "AddCustomUI.xlsm".
Método AddCustomUI
El AddCustomUI
método acepta dos parámetros:
filename : cadena que contiene un nombre de archivo que especifica el libro que se va a modificar.
customUIContent : cadena que contiene el contenido personalizado (es decir, el marcado XML que describe la personalización).
Interactuar con el libro
El método de ejemplo, AddCustomUI
, comienza abriendo el libro solicitado en modo de lectura y escritura, como se muestra en el código siguiente.
using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, true))
Trabajar con el elemento de extensibilidad de la cinta de opciones
Después, tal y como se muestra en el siguiente código, el método de ejemplo trata de recuperar una referencia al elemento único de extensibilidad de la cinta de opciones. Si el elemento no existe todavía, el código lo crea y almacena una referencia al nuevo elemento.
// You can have only a single ribbon extensibility part.
// If the part doesn't exist, create it.
RibbonExtensibilityPart part = document.RibbonExtensibilityPart ?? document.AddRibbonExtensibilityPart();
Agregar la personalización
Dada una referencia a la parte de extensibilidad de la cinta de opciones, el código siguiente finaliza estableciendo la propiedad del CustomUI
elemento en un nuevo CustomUI objeto que contiene la personalización proporcionada. Una vez aplicada la personalización, el código guarda la IU personalizada.
part.CustomUI = new CustomUI(customUIContent);
Código de ejemplo
A continuación se muestra el ejemplo de código completo AddCustomUI
en C# y Visual Basic. El primer argumento pasado a AddCustomUI
debe ser la ruta de acceso absoluta al archivo AddCustomUI.xlsm creado a partir de las instrucciones anteriores.
static void AddCustomUI(string fileName, string customUIContent)
{
using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, true))
{
// You can have only a single ribbon extensibility part.
// If the part doesn't exist, create it.
RibbonExtensibilityPart part = document.RibbonExtensibilityPart ?? document.AddRibbonExtensibilityPart();
part.CustomUI = new CustomUI(customUIContent);
}
}