INTERFAZ DE SUARIO 2013Una nueva característica de Excel 2013 es la interfaz de un único documento (SDI). La SDI es un método para organizar las aplicaciones de interfaz gráfica de usuario en ventanas individuales que el administrador de ventanas del sistema operativo controla por separado. En Excel 2013, cada una de las ventanas de Excel puede contener un solo libro y cada una tiene su propia UI de cinta de opciones (vea la figura 1). De forma predeterminada, al abrir un nuevo libro, se mostrará en otra ventana de Excel aunque se trate de la misma instancia de Excel.
Figura 1. Interfaz de un único documento en Excel 2013

Esto contrasta con la interfaz de múltiples documentos (MDI), en la que se usa una sola ventana primaria para contener varias ventanas secundarias anidadas. En este caso, solo la ventana primaria tiene una barra de menús o herramientas. En Excel 2010, cada libro de una única instancia de Excel usa una UI de cinta de opciones común (vea la figura 2).
Figura 2. Interfaz de múltiples documentos en Excel 2010

Excel usa la MDI, lo que significa que hay una sola ventana de nivel de aplicación que contiene todos los libros abiertos en una determinada instancia de Excel. Las ventanas del libro se pueden organizar dentro de la ventana de aplicación de Excel. De esta forma, todas comparten la misma UI de cinta de opciones. SDI en Excel significa que cada libro tiene su propia ventana de aplicación de nivel superior y su propia UI de cinta de opciones correspondiente.
![]() |
---|
No hay ninguna opción de compatibilidad con MDI en Excel.
|
En los sistemas de dos monitores, la SDI en Excel permite realizar comparaciones en paralelo de dos libros arrastrando cada libro a un monitor diferente. Cada libro funciona independientemente de los demás.
Si tiene acceso a Excel 2010 y Excel 2013 y quiere ver las interfaces SDI y MDI en acción, siga estos pasos.
Para comparar el número de procesos de las interfaces MDI y SDI:
- En el menú Inicio de Windows, inicie Excel 2010.
- Inicie una segunda instancia de Excel. Compruebe que se muestran las dos ventanas de Excel.
- En la barra de tareas de Windows, elija y, a continuación, seleccione Iniciar el Administrador de tareas.
- Elija la pestaña Procesos y luego desplácese hacia abajo hasta que vea las dos entradas Excel.exe. Esto le indica que, de forma predeterminada, Excel abre una nueva instancia cada vez que se le llama (dos instancias de Excel).
- Cierre las dos instancias de Excel.
- En el menú Inicio de Windows, elija Excel 2013.
- Inicie una segunda instancia de Excel. Compruebe que se muestran las dos ventanas de Excel.
- Vuelva a iniciar el Administrador de tareas.
- En la pestaña Procesos, desplácese hacia abajo hasta que vea Excel.exe. Observe que aunque abrió dos repeticiones de Excel, los dos libros se encuentran en la misma instancia de Excel.
Para ver cómo funcionan la SDI y la MDI dentro de una instancia de Excel, siga estos pasos.
Para comparar el número de instancias de Excel para interfaces MDI y SDI:
- En el menú Inicio de Windows, elija Excel 2010.
- Seleccione la ventana de Excel para activarla y compruebe que Libro1 es el libro actual.
- Presione CTRL + N para abrir otro libro. Compruebe que Libro2 es ahora el libro actual.
- Minimice Libro2 y vea Libro1. Ambos libros se encuentran en la misma instancia de Excel.
- Cierre Excel.
- En el menú Inicio de Windows, elija Excel 2013.
- Seleccione la ventana de Excel para activarla y compruebe que Libro1 es el libro actual.
- Presione CTRL + N para abrir otro libro. Compruebe si Libro2 se abre en una ventana distinta (pero en la misma instancia de Excel).
- Cierre Excel.
![]() |
---|
Podemos abrir varias instancias de Excel usando el siguiente modificador de la línea de comandos: excel.exe /x. Este modificador inicia Excel en un nuevo proceso.
|
En este artículo, trataremos la implementación de la SDI en la interfaz de usuario de Excel y cómo afecta a la programación en Excel.
Cambios en la interfaz de usuario
Si examinas atentamente después de abrir un libro de Excel, ya no se ven los botones de estado de la ventana (minimizar, maximizar yrestaurar) en la esquina superior izquierda de la cinta de opciones. La figura 3 muestra los botones de estado de la ventana que están disponibles en Excel y Excel 2007. Puesto que la ventana de nivel superior ahora está vinculada directamente a un único libro o vista de libro, ya no es necesaria para la interfaz de usuario de administración de ventanas en Excel.
Figura 3. UI de estado de ventanas en Excel 2010

Además, a partir de Excel, ya no hay varias ventanas de libro en una única ventana de instancia de Excel tal como se muestra en la figura 4.
Figura 4. Varios libros en una sola ventana de instancia de Excel

Actualización y fórmulas
Las actualizaciones en Excel seguirán siendo "globales", lo que significa que se producen en todos los libros de la misma instancia de Excel. Las fórmulas que hacen referencia a través de los libros que están abiertos en la misma instancia de Excel participarán en cálculos juntas y compartirán el mismo modo de cálculo de libro (automático, automático excepto para tablas de datos y manual).
En MDI, solo hay una barra de fórmulas para controlar todos los libros abiertos en esa instancia de Excel. En SDI, hay una barra de fórmulas por cada libro. Para SDI, al editar referencias a través libros en una fórmula, las barras de fórmula de los libros de origen y de destino mostrarán la fórmula que se está editando actualmente como se muestra en la figura 5.
Figura 5. Actualización de fórmulas entre libros

Paneles de tareas personalizados
Los paneles de tareas personalizados que se adjuntaban a una ventana de nivel superior en MDI ahora, en SDI, se adjuntan a la ventana de un libro determinado. Al cambiar a otro libro, se activa esa ventana del libro, que no tiene necesariamente adjunto el panel de tareas personalizado, a menos que se actualice el código del desarrollador para mostrar específicamente el panel de tareas personalizado para ese libro.
En resumen, como desarrollador, querrá:
- Asegurarse de que para cualquier libro en el que desee mostrar el panel de tareas personalizado, escriba código para que de forma explícita lo haga.
- Asegurarse de que controla de forma explícita la actualización del estado del panel de tareas personalizado en todas las instancias, si desea que todos los paneles de tareas personalizados reflejen el mismo estado. Por ejemplo, el usuario activa una casilla de verificación y desea que esa acción se refleje en todos los paneles de tareas personalizados en todas las instancias de Excel.
Cintas de opciones personalizadas
Las fichas y controles de la cinta de opciones personalizada que suponían la existencia de una única interfaz de usuario para cada instancia de aplicación en las versiones anteriores de Excel ahora se propagarán a cada cinta de opciones del libro en Excel. Mientras que en MDI, el desarrollador de la cinta de opciones personalizada no debe tener en cuenta varias instancias de sus controles en las distintas instancias de la interfaz de usuario de Excel, con SDI, deberán tener en cuenta esta situación.
Si desea mantener todos los controles de la interfaz de usuario de la cinta de opciones en el mismo estado en los libros abiertos, necesitará:
- Asegurarse de que el código es capaz de desplazarse por las ventanas de los libros y actualizar el estado de los controles.
O bien
- Almacenar en caché el estado de los controles de forma que, cuando el usuario cambia a otro libro, se pueda capturar ese evento y se actualicen los controles como parte del modificador de ventana.
Además, considere el caso el que desarrolla código para agregar un control de interfaz de usuario personalizado usuario usandoApplication.Commandbar para tener acceso a la cinta de opciones. Cuando intenta tener acceso a ese control en un momento posterior, el código deberá tener en cuenta el hecho de que el libro activo puede no ser el mismo libro donde agregó el control.
Consideraciones para el código VBA
Con el cambio a SDI, todas las propiedades, los eventos y los métodos de ventana a nivel de la aplicación de Excel no se ven afectados y funcionan de la misma forma que lo hacían en versiones anteriores de Excel (por ejemplo, Application.ActiveWindow,Application.Windows, etc.).
En Excel, todas las propiedades, los eventos y los métodos de ventana a nivel de libro funcionan ahora en la ventana de nivel superior (por ejemplo, el evento Workbook.WindowActivate todavía se desencadena cuando se cambia a un libro determinado, el eventoWorkbook.Resize todavía se desencadena cuando se cambia el tamaño de ese libro y ThisWorkbook.Windows(1).Height,ThisWorkbook.Windows(1).Width, ThisWorkbook.Windows(1).Left, ThisWorkbook.Windows(1).Right,ThisWorkbook.Windows(1).Minimize, ThisWorkbook.Windows(1).Maximize, etc., funcionarán en la ventana de nivel superior del libro activo).
En la siguiente tabla se enumeran algunos casos especiales.
Tabla 1. Comportamiento del modelo de objetos con la SDI
Función
|
Descripción
|
Implicaciones de SDI
|
---|---|---|
Application.Visible
|
Devuelve o establece un valor de Boolean que determina si el objeto es visible. Lectura y escritura.
|
Si todas las ventanas están ocultas:
Además:
|
Application.ShowWindowsInTaskbar
|
True si hay un botón de barra de tareas de Windows independiente para cada libro abierto. El valor predeterminado es True.Boolean de lectura y escritura.
|
Esta configuración está en desuso en Excel.
|
Application.Caption
|
Devuelve o establece un valorString que representa el nombre que aparece en la barra de título de la ventana principal de Microsoft Excel.
|
Actualiza todas las ventanas para esa instancia de Excel.
|
Application.Hwnd
|
Devuelve un valor Long que representa el indicador de ventana de nivel superior de la ventana de Microsoft Excel. Solo lectura.
|
Devolverá el identificador de la ventana activa.
|
Application.FormulaBarHeight
|
Permite al usuario especificar la altura de la barra de fórmulas en líneas. Long de lectura y escritura.
|
Funciona en la ventana del libro activo actualmente; no todas las ventanas para esta instancia de Excel.
|
Application.DisplayFormulaBar
|
True si se muestra la barra de fórmulas. Boolean de lectura y escritura.
|
Funciona en todas las ventanas para esta instancia de Excel.
|
Workbook.Windows
|
Devuelve una colección de ventanas que representa todas las ventanas del libro especificado. Object de ventanas de solo lectura.
|
Ningún cambio de comportamiento. Devuelve la colección de ventanas de este libro como paneles de tareas, vistas adicionales.
|
Workbook.WindowResize
|
Se produce cuando se cambia el tamaño de cualquier ventana del libro.
|
Ningún cambio de comportamiento. Se desencadena cuando se cambia el tamaño de la ventana de un libro (el nivel superior).
|
Window.Caption
|
Devuelve o establece un valorVariant que representa el nombre que aparece en la barra de título de la ventana principal del documento.
|
Ningún cambio de comportamiento.
|
Workbook.Protect(Password, Structure, Windows)
|
Protege un libro para que no se pueda modificar.
|
Independientemente del valor del parámetro Windows(True o False), NO se habilitará la protección de la estructura de la ventana. No se muestra ningún error en tiempo de ejecución si se especifica True, pero esa parte de la llamada de procedimiento devolverá un NO-OP.
|
![]() |
---|
No se requiere ningún cambio en el código personalizado para que los comandos XLM sigan funcionando según lo previsto en Excel con SDI.
|
Desuso de la opción Ventanas de Proteger libro
En SDI, cada libro tiene su propia ventana de nivel superior que se puede restaurar, minimizar y cerrar. Para reducir cualquier confusión que pueda surgir que no esté relacionada con mover, cambiar de tamaño o cerrar la ventana de nivel superior, la opción Ventanas de la característica Proteger libro en Excel ya no está disponible (vea la figura 6). La tabla 2 describe esta acción con más detalle.
Figura 6. La opción Ventanas del cuadro de diálogo Proteger libro está deshabilitada.

Acción
|
Comportamiento
|
---|---|
Abrir un libro creado en una versión anterior de Excel, con la protección de ventanas habilitada.
|
Excel reconocerá los atributos de tamaño y ubicación de la ventana, pero no impedirá que el usuario ordene o cierre estas ventanas.
|
Ver el cuadro de diálogo Proteger estructuras y ventanas.
|
Excel mostrará el cuadro de diálogo pero con la opción Ventanasdeshabilitada.
|
Soluciones para problemas de la SDI
La siguiente sección proporciona soluciones para problemas que puede encontrar al usar la SDI.
- No se puede cerrar un libro al hacer clic en el botón Cerrar de la "X" roja cuando ese libro se abre mediante programación a través de un formulario de usuario modal. Para solucionar este problema, se recomienda que agregue el siguiente código al procedimiento del evento Layout del formulario de usuario y, a continuación, abra el formulario de usuario como no modal.
Private Sub UserForm_Layout() Static fSetModal As Boolean If fSetModal = False Then fSetModal = True Me.Hide Me.Show 1 End If End Sub
Otra opción es abrir la ventana del libro, activar cualquier otra ventana y, a continuación, volver a activar la ventana del libro. Ahora debería poder cerrar el libro usando el botón Cerrar. - Supongamos que el código VBA abre varios libros y usa la propiedad DataEntryMode para controlar la entrada de datos y el cierre del libro. En el modelo de SDI de Excel, como cada libro está contenido en su propio proceso, la propiedad DataEntryMode que se usa en un libro no reconoce la existencia de otro libro y, por tanto, tiene poco o ningún efecto sobre su interacción. Para solucionar este problema, hay un par de opciones. Puede ocultar los libros u hojas de cálculo adicionales con Window.Visible = False oSheet.Visible = False, respectivamente. También puede detectar y cancelar los eventos de cierre medianteWorkbook.BeforeClose(Cancel) = True.
- Las barras de herramientas agregadas a libros de Excel a través de código de barra de comandos y archivos XLA no se mostrarán hasta que cierre y vuelva a abrir el libro. Las barras de comandos para personalizar la interfaz de usuario quedaron en desuso a partir de Excel 2007. La solución óptima es personalizar la interfaz de usuario de la cinta de opciones con archivos XML tal como se describe en detalle en el artículo Customizing the 2007 Office Fluent Ribbon for Developers (Part 1 of 3).Otra opción consiste en utilizar un evento de nivel de aplicación para detectar la apertura de nuevos libros y, a continuación, usarApplication.Windows en lugar de los libros para agregar el control de la cinta de opciones. Puede utilizar el siguiente código de ejemplo para conseguirlo.
Private Sub Workbook_Open() ToolBarsAdd End Sub Sub ToolBarsAdd() Dim oBar As CommandBar ToolBarsDelete Set oBar = Application.CommandBars.Add(Name:="MyToolBar") ' With oBar With .Controls.Add(Type:=msoControlButton) .OnAction = "SayHello" .FaceId = 800 End With End With oBar.Visible = True End Sub Sub SayHello() MsgBox "Hello from '" & ActiveWorkbook.Name & "'" End Sub
El siguiente código se podría usar a continuación para quitar la barra de herramientas antes de cerrar el libro.Private Sub Workbook_BeforeClose(Cancel As Boolean) ToolBarsDelete End Sub Sub ToolBarsDelete() Dim wnd As Window On Error Resume Next For Each wnd In Application.Windows wnd.Activate Application.CommandBars("MyToolBar ").Delete Next wnd End Sub
- En Excel, de forma predeterminada se muestra un formulario de usuario sin modo como ventana de nivel superior por encima de todas las ventanas de Excel. En Excel 2013, un formulario de usuario sin modo solo es visible encima de la ventana del libro que estaba activo cuando se mostró el formulario de usuario. Jan Karel Pieterse, MVP de Excel (profesional más valioso), ofrece una explicación del problema y una solución en su página web:
- http://www.jkp-ads.com/articles/keepuserformontop.asp.
- https://msdn.microsoft.com/es-es/library/office/dn251093.aspx
No hay comentarios.:
Publicar un comentario