Help and Support
 

powered byLive Search

OL: cómo a CommandBars de Uso en soluciones de Outlook

Id. de artículo:201095
Última revisión:sábado, 19 de noviembre de 2005
Versión:2.4
En esta página

Resumen

Aunque Microsoft Outlook utiliza el CommandBars mismo que utilizan otras aplicaciones de Microsoft Office, CommandBars se implementan de una forma diferente en Outlook. Las diferencias en implementación CommandBar en este artículo se describen para que los programadores puedan comprender mejor cómo funcionar con CommandBars al diseñar una solución de Outlook.

Volver al principio

Más información

En Office, los menús y las barras de cada aplicación de Office son representados por un modelo de objetos CommandBars. CommandBars son un componente compartido de Office y el modelo de objetos se proporciona en la Biblioteca de objetos de Microsoft Office 10.0. El modelo de objetos CommandBars no se contiene en el modelo de objetos de Outlook; en su lugar, el objeto de Outlook "tuna" en la Biblioteca de objetos de Microsoft Office 10.0 para esta funcionalidad.

Volver al principio

Arquitectura CommandBar de Outlook

Otras aplicaciones de Office admiten un conjunto de CommandBars Outlook admite dos : uno estableció en la ventana principal de aplicación y un segundo se fue a establecer en cada producto.

Desde el punto de vista de un desarrollador, a la ventana principal en Outlook (la ventana de aplicación) se le denomina "un explorador".

COPETE: También se pueden considerar ventanas para carpeta estas ventanas porque puede hacer clic con el botón secundario en cualquier carpeta y a continuación, hacer clic en Abrir en una ventana nueva para abrir ventanas diferentes para trabajarlas con carpetas diferentes.

Además de estas ventanas de explorador, cada elemento de Outlook tiene una ventana de formulario que se denomina "un inspector" También estas ventanas de inspector tienen un conjunto de CommandBars porque los artículos tienen menús y barras de herramientas.

Utilice los objetos diferentes de manera siguiente:
?Utilice los objetos Explorer (ActiveExplorer/GetExplorer) para referirse a la ventana principal de aplicación en Outlook.
?Utilice los objetos Inspector (ActiveInspector/GetInspector) para referirse a la ventana de un elemento de Outlook.
                 |  To refer to the                  |  To refer to a folder
   Window type   |  "active" window                  |  or item's window
   ---------------------------------------------------------------------------------
   Application   |  Use the ActiveExplorer method.   |  Use the GetExplorer method.
                 |                                   |
   Item or Form  |  Use the ActiveInspector method.  |  Use the GetInspector method.
				

Consideraciones cuando utiliza Microsoft Word Como Las E-Mail Editor

Al estar diseñando una solución CommandBar de Outlook para elementos de correo, es importante comprender que se utiliza CommandBars diferentes cuando Microsoft Word se establece como el editor de correo electrónico. Algunos momentos claves que se debe tener en cuenta cuando utiliza Word son:
?CommandBars son parte de Word no Outlook.
?CommandBars diferentes están disponibles basados en el editor de mensajes y en el formato.
?Los botones personalizados pueden desaparecer cuando cambia editor de mensajes o formato.
?No está diseñado para que se personalice el CommandBar especial Envelope.
?No hay ningún objeto Inspector para los formatos HTML y Texto sin formato con Office 2000 si Word se establece como el editor de correo electrónico.
El CommandBars disponible puede cambiar basando en los editores distintos (Outlook contra Word) y en formatos distintos de mensaje (Formato de texto enriquecido, HTML y Texto sin formato); por lo tanto, es importante que pruebe su solución exhaustivamente en cada configuración. Porque CommandBars diferentes están disponibles en configuraciones diferentes, es común para un botón de que agrega en una configuración que ya no se muestra tras cambiar a otra configuración. Con Word configurado como el editor de correo electrónico, la aplicación de Word proporciona el item-level (inspector CommandBars). Aunque algunos de estos CommandBars de Word son accesibles a través del objeto Inspector si utiliza Microsoft Office 2002, esto no es el caso de Microsoft Office 2000. Office 2000, los mensajes HTML y Texto sin formato no tienen objetos Inspector si utiliza Word; por tanto, debe acceder al CommandBars utilizando el modelo de objetos de Word. La ubicación de almacenamiento para personalizaciones CommandBar que también basaron los cambios en qué aplicación proporciona al CommandBars. Las personalizaciones realizadas por usted en el CommandBars de Outlook estándar se almacenan en el archivo Outcmd.dat. Las personalizaciones realizadas por usted en el CommandBars de Word están almacenadas en la plantilla global Normal.dot de Word.

También Word proporciona dos conjuntos diferentes de tecnologías CommandBar que dependen del formato del mensaje de correo electrónico. In Office 2002, todos los formatos de mensaje utilizan el CommandBar especializado Envelope por configuración predeterminada pero en Office 2000 sólo HTML y los mensajes de Texto sin formato utilizan el CommandBar Envelope. El CommandBar Envelope contiene características que son específicas a correo electrónico como los campos Enviar de botón y mensaje ( Para, CC y Asunto). El CommandBar Envelope no se muestra en la lista Barras de Word y no está diseñado para personalizarse. Por tanto, debe realizar algunas modificaciones a otro CommandBars. Office 2000 controla mensajes con formato de texto enriquecido de forma diferente y utiliza el Outlook Send Mail y el CommandBars Outlook Read Mail para componer y leer mensajes. Aunque los formatos de mensaje Office 2002 no utilizan el Outlook Send Mail y el CommandBars Outlook Read Mail de forma predeterminada, puede diseñar un formulario personalizado de Outlook que utiliza estos CommandBars. Para configurar el formulario para que utilice Word en modo de diseño de formularios, haga clic en la ficha Propiedades del formulario y a continuación, seleccione Usar siempre Microsoft Word como editor de correo electrónico.

Volver al principio

Un historial de Compatibilidad de Outlook para menús y barras personalizables de herramientas

CommandBars se diseñaron originalmente para aplicaciones document-centric como Word y Microsoft Excel que admite un conjunto único de CommandBars de nivel de aplicación. Las otras aplicaciones admiten todas las características del diseño CommandBars en totalidad y las otras aplicaciones son totalmente compatibles con muchos aspectos sobre personalización de CommandBars en Microsoft Office 97 y posteriormente. Sin embargo, Outlook ha continuado admitiendo CommandBars es varias formas:
?En Microsoft Outlook 97, no puede personalizar barras de herramientas y menús utilizando el interfaz de usuario de Outlook. No está diseñado para que Outlook 97 almacene cambios a CommandBars. Aunque es expuesto por el modelo de objetos CommandBars en el modelo de objetos de Outlook, no puede utilizar el modelo de objetos CommandBars para modificar los menús o las barras de herramientas porque están en un estado de "sólo lectura". Sin embargo, puede utilizar el método Execute para ejecutar un comando integrado de Outlook mediante programación. La forma única de que crea botones de barra adicional de herramientas o comandos de menú en Outlook 97 es crear una Extensión de Cliente de Microsoft Exchange en C o C++.
?En Microsoft Outlook 98, Microsoft recomienda que no realice cambios en el modelo de objetos CommandBars mediante programación. Las barras de herramientas y menús se pueden personalizar en el interfaz de usuario de Outlook. Las personalizaciones se almacenan en un archivo denominado Outcmd.dat. No obstante, aunque es expuesto por el modelo de objetos CommandBars en el modelo de objetos de Outlook y puede agregar botones nuevos de barra de herramientas y comandos de menú mediante programación, esta característica no se diseñó o no se probó para funcionar realmente. Puede experimentar problemas como resultado si usa el modelo de objetos CommandBars en Outlook 98. Outlook 98 no admite Microsoft Visual Basic para Aplicaciones ( VBA ) o código de nivel de aplicación. Por tanto, si agrega un comando personalizado mediante programación a una ventana o un explorador de nivel de aplicación, no hay forma de adjuntar código personalizado al botón. Puede tener el botón para que a inspector, ejecute la secuencia personalizada de comandos Microsoft Visual Basic Scripting Edition (VBScript) en el formulario los problemas se producirán haciendo el botón mostrarse en otros tipos de elementos y puede haber diferencias entre elementos nuevos de apertura y elementos existentes si agrega un comando personalizado a una ventana a nivel de elemento mediante programación.
?Outlook 2000 es la primera versión de Outlook que está diseñado para admitir barras de herramientas y menús personalizables mediante programación. Esto coincide con la incorporación de compatibilidad de complementos de VBA y de Modelo de objetos componentes.

Volver al principio

CommandBars y el modelo de objetos de Outlook

En los modelo de objetos de otras aplicaciones de Office, la colección CommandBars se encuentra lejos del objeto Application porque aquellas aplicaciones admiten sólo un conjunto de CommandBars de nivel de aplicación. Sin embargo, está diseñado para que el modelo de objetos de Outlook admita los dos conjuntos de CommandBars de que Outlook admite (inspector y Explorador).

En el modelo de objetos de Outlook, la colección CommandBars se encuentra lejos de objetos Explorer e Inspector, no el objeto Application de Outlook. Más ejemplos del código son disponibles, aquéllos ilustran cómo para, cambia make a CommandBars mediante programación; sin embargo, está diseñado para estos más ejemplos de otras aplicaciones de Office. Para usar estos ejemplos en Outlook, debe modificar el código correctamente para reflejar la diferencia en el modelo de objetos de Outlook.

Volver al principio

Soluciones de formularios personalizados

En una solución de formularios personalizados que utiliza VBScript, normalmente accede al CommandBars a nivel de formulario utilizando código que es similar al siguiente:
Set objCBs = Item.GetInspector.CommandBars
				

Un ejemplo de VBScript para ejecutar un comando de Outlook

Puede utilizar el código siguiente de ejemplo con un control CommandButton de un formulario de contactos para crear fácilmente una carta nueva para un Contacto:
Sub CommandButton1_Click()
   Set MyCB = Item.GetInspector.CommandBars.Item("Menu Bar")
   Set MyMenu = MyCB.Controls("Actions")
   Set MyMenuItem = MyMenu.Controls("New Letter to Contact")
   MyMenuItem.Execute()
End Sub
				

Un ejemplo de VBScript que utiliza el método "FindControl"

Si conoce el valor interno que ha asignado Outlook para cada comando, puede utilizar el método FindControl para hacer referencia a cualquier comando de Outlook (o control en relación al modelo de objetos CommandBars). Si utiliza el identificador interno, puede utilizar sintaxis más concisa al ejecutar comandos CommandBar y obtener acceso a comandos que no se pueden encontrar en el menú o en la barra de herramientas que se muestra.

Por ejemplo, considere un formulario personalizado de Outlook que utiliza un botón de comando personalizado para imprimir el formulario. Dado que el botón de comando se denomina cmdPrint, en los ejemplos siguientes del código de VBScript cualquiera de dos muestra el cuadro de diálogo File Print:
Sub cmdPrint_Click()
   Item.GetInspector.CommandBars.FindControl(,4).Execute
End Sub

Sub cmdPrint_Click()
   Item.GetInspector.CommandBars.Item("Menu Bar").Controls("File") _
      .Controls("Print...").Execute
End Sub
				
Ve el ejemplo de Excel para un ejemplo de cómo generar una lista de control identificadores CommandBar de Outlook " " Utilizar una utilidad de Excel para generar una lista de Identificadores de CommandBar de Outlook" de este artículo

Volver al principio

Soluciones nivel de aplicación

En una solución de nivel de aplicación tales como VBA de Outlook o un complemento COM, el método típico de tener acceso al CommandBars de nivel de aplicación es utilizar código que es similar al siguiente:
Set objCBs = Application.ActiveExplorer.CommandBars
				

Visual Basic para Aplicaciones

Está diseñado para que Outlook VBA sea una herramienta de desarrollo personal; no está diseñado para que se implementen estos tipos de soluciones. Por tanto, normalmente no personalizará CommandBars de VBA de Outlook mediante programación. En su lugar, cree manualmente el botón personalizado CommandBar:
1.En el menú Herramientas, haga clic en Personalizar.
2.Haga clic en la ficha Comandos y a continuación, haga clic en Macros en la lista de categorías.
3.Arrastre una macro al menú o a la barra de herramientas.
4.Para modificar la apariencia del comando de barra o menú en la ventana Personalizar, haga clic en Modificar selección y a continuación, haga cualquier modificación al comando personalizado de barra o menú.
5.Haga clic en Cerrar.

Un ejemplo de VBA de agregar un control CommandBar

Para agregar un control CommandBar:
1.Cree un formulario personalizado de ejemplo Contabilizar de Outlook y a continuación, publíquelo a su Bandeja de entrada. Conózcalo como TestForm.
2.En el menú Herramientas, elija Macro y a continuación, haga clic en Editor de Visual Basic.
3.Bajo Proyecto - Proyecto1, haga doble clic en Project1, haga doble clic en Microsoft Outlook Objetos y a continuación, haga doble clic en ThisOutlookSession.
4.En la ventana de código, escriba el siguiente código:
Dim WithEvents myControl As CommandBarButton

Private Sub Application_Startup()

   Dim oExp As Outlook.Explorer
   Dim oBar As Office.CommandBar

   Set oExp = Outlook.ActiveExplorer
   Set oBar = oExp.CommandBars.Item("Standard")

   ' See if button already exists based on Tag value
   Set myControl = oBar.FindControl(, , "OpenForm")

   ' If not found then create button
   If myControl Is Nothing Then
      Set myControl = oBar.Controls.Add(, , , 2, True)
      With myControl
         .Caption = "Open Form"
         .FaceId = 59
         .Style = msoButtonIconAndCaption
         .Tag = "OpenForm"
         .Visible = True
      End With
   End If

End Sub

Private Sub myControl_Click(ByVal Ctrl As _
      Office.CommandBarButton, CancelDefault As Boolean)
      
   Dim myFolder As MAPIFolder

   Set myFolder = Session.GetDefaultFolder(olFolderInbox)
   Set MyItem = myFolder.Items.Add("IPM.Post.TestForm")
   MyItem.Display

   Set MyItem = Nothing
   Set myFolder = Nothing

End Sub
					
5.Cierre el Editor de Visual Basic.
6.Cierre Outlook. Cuando se le pregunta que desee guardar cambios en el proyecto de VBA, haga clic en Sí.
7.Inicie Outlook.

Un ejemplo complemento COM de agregar un control CommandBar

El método compatible para distribuir código de nivel de aplicación para usuarios de Outlook es crear un complemento COM. El ejemplo siguiente del código de complemento COM muestra la forma de que agrega un botón nuevo a la primera posición en el CommandBar de Outlook Estándar (también puede establecer la propiedad OnAction del botón para cargarlo COM si ya no está cargado):
Dim OL As Outlook.Application
Dim WithEvents objButton As Office.CommandBarButton

Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
   ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
   ByVal AddInInst As Object, custom() As Variant)

   Dim objBar As Office.CommandBar
   Set OL = Application
   Set objBar = OL.ActiveExplorer.CommandBars.Item("Standard")
   Set objButton = objBar.Controls.Add(, , , 1, True)
   With objButton
      .FaceId = 59
      .Caption = "My Button"
      .Style = msoButtonIconAndCaption

      ' The OnAction property is optional but recommended. 
      ' It should be set to the ProgID of the add-in, such that if
      ' the add-in is not loaded when a user presses the button,
      ' Outlook loads the add-in automatically and then raises
      ' the Click event for the add-in to handle. 

      .OnAction = "!<" & AddInInst.ProgId & ">"
   End With

End Sub

Private Sub objButton_Click(ByVal Ctrl As Office.CommandBarButton, _
   CancelDefault As Boolean)

   MsgBox "Hello World"

End Sub
				
Para información adicional acerca de recursos disponibles para crear Complementos COM para Outlook, haga clic en el número de artículo siguiente para ver el artículo en el Microsoft Knowledge Base:
230225 (http://support.microsoft.com/kb/230225/EN-US/) OL2000: Cómo crear un complemento COM para Outlook

Volver al principio

Utilizar una utilidad de Microsoft Excel para generar una lista de Identificadores de CommandBar de Outlook

Puede utilizar el código siguiente de ejemplo Microsoft Excel VBA para generar una hoja de cálculo que contiene una lista de comandos de Outlook y su control correspondiente CommandBar, identificadores. El código agrega un Autofiltro de Excel a la hoja de cálculo de manera que puede localizar fácilmente el identificador que está buscando.

Para configurar esta utilidad:
1.Inicie Excel Compruebe que se encuentra en un libro de Excel nuevo.
2.En el menú Herramientas, elija Macro y a continuación, haga clic en Editor de Visual Basic.
3.En la ventana Explorador de proyectos del editor, haga doble clic en ThisWorkbook para abrir una ventana de código.
4.En la ventana de código, escriba el siguiente código:
Option Explicit
Dim oOutApp As Outlook.Application
Dim I As Long
Dim iRowCount As Long
Dim oItm As Object ' so it'll handle varying item types
Dim oSheet As Excel.Worksheet
Dim oNS As Outlook.NameSpace
Dim oFld As Outlook.MAPIFolder

Sub GetOutlookCommandBarIDs()

If MsgBox("This will clear the current worksheet, OK to continue?", vbOKCancel) = 1 Then
   
   Cells.Select
   Selection.ClearContents
   
   iRowCount = 0
   Set oSheet = ActiveSheet
   Set oOutApp = New Outlook.Application
   Set oNS = oOutApp.Session
   
   Set oItm = oOutApp.CreateItem(olMailItem)
   GetInspectorIDs oItm, "Mail Message"
   Set oItm = oOutApp.CreateItem(olPostItem)
   GetInspectorIDs oItm, "Post"
   Set oItm = oOutApp.CreateItem(olContactItem)
   GetInspectorIDs oItm, "Contact"
   Set oItm = oOutApp.CreateItem(olDistributionListItem)
   GetInspectorIDs oItm, "Distribution List"
   Set oItm = oOutApp.CreateItem(olAppointmentItem)
   GetInspectorIDs oItm, "Appointment"
   Set oItm = oOutApp.CreateItem(olTaskItem)
   GetInspectorIDs oItm, "Task"
   Set oItm = oOutApp.CreateItem(olJournalItem)
   GetInspectorIDs oItm, "Journal Entry"
   
   Set oFld = oNS.GetDefaultFolder(olFolderInbox)
   GetExplorerIDs oFld, "Mail Folder"
   Set oFld = oNS.GetDefaultFolder(olFolderContacts)
   GetExplorerIDs oFld, "Contact Folder"
   Set oFld = oNS.GetDefaultFolder(olFolderCalendar)
   GetExplorerIDs oFld, "Calendar Folder"
   Set oFld = oNS.GetDefaultFolder(olFolderTasks)
   GetExplorerIDs oFld, "Task Folder"
   Set oFld = oNS.GetDefaultFolder(olFolderJournal)
   GetExplorerIDs oFld, "Journal Folder"
   Set oFld = oNS.GetDefaultFolder(olFolderNotes)
   GetExplorerIDs oFld, "Notes Folder"
   
   Selection.AutoFilter
   Cells.Select
   Cells.EntireColumn.AutoFit
   Range("A1").Select

   MsgBox "The spreadsheet is complete."
   
End If

End Sub


Sub GetInspectorIDs(oItm, sType As String)
   Dim oCBs As Office.CommandBars
   Dim oCtl As Office.CommandBarControl
   Set oCBs = oItm.GetInspector.CommandBars
   For I = 1 To 35000
      Set oCtl = oCBs.FindControl(, I)
      If Not (oCtl Is Nothing) Then
         iRowCount = iRowCount + 1
         oSheet.Cells(iRowCount, 1) = "Inspector"
         oSheet.Cells(iRowCount, 2) = sType
         oSheet.Cells(iRowCount, 3) = oCtl.Parent.Name
         oSheet.Cells(iRowCount, 4) = oCtl.Caption
         oSheet.Cells(iRowCount, 5) = CStr(I)
      End If
   Next
End Sub


Sub GetExplorerIDs(oFld As Outlook.MAPIFolder, sType As String)
   Dim oCBs As Office.CommandBars
   Dim sFilter As String
   Dim oCtl As Office.CommandBarControl
   Set oCBs = oFld.GetExplorer.CommandBars
   For I = 1 To 35000
      Set oCtl = oCBs.FindControl(, I)
      If Not (oCtl Is Nothing) Then
         iRowCount = iRowCount + 1
         oSheet.Cells(iRowCount, 1) = "Explorer"
         oSheet.Cells(iRowCount, 2) = sType
         oSheet.Cells(iRowCount, 3) = oCtl.Parent.Name
         oSheet.Cells(iRowCount, 4) = oCtl.Caption
         oSheet.Cells(iRowCount, 5) = CStr(I)
      End If
   Next
End Sub
					
5.En el menú Herramientas, haga clic en Referencias. En la lista de bibliotecas de objetos disponibles, haga clic en biblioteca de objetos de Microsoft Outlook 10.0 y a continuación, haga clic en Aceptar.
6.Cierre el Editor de Visual Basic.
7.Guarde el libro de Excel para tenerlo para uso futuro.
Para generar la lista de identificadores:
1.Asegúrese de que las configuración de seguridad de Excel permiten ejecución de la macro. En el menú Herramientas, haga clic en Seguridad y a continuación, asegúrese de que sus configuraciones están temporalmente al menos establecidas en Medio o en Bajo. Si cambia las configuraciones de Alta, debe reiniciar Excel.
2.Abra el libro que fue creado por usted al configurar la utilidad de Excel.
3.En el menú Herramientas, elija Macro y a continuación, haga clic en Macros. Haga clic en la macro GetOutlookCommandBarIDs y a continuación, haga clic en Ejecutar.
4.Espere mientras se genera la hoja de cálculo. Esto tardará al menos par de minutos. Después de que la macro termine de runnning, recibe un mensaje que indica "la hoja de cálculo es completa"
5.Después de que se genera la hoja de cálculo, guarde el libro de modo que no tiene que volver a ejecutar la macro.
Para usar la hoja de cálculo, utilice la función de Autofiltro en la parte superior para localizar el ID de CommandBar que está buscando. Por ejemplo, de celda A1, puede seleccionar un comando en un objeto Explorer o Inspector; en celda B1, a continuación, seleccionar el tipo de elemento o carpeta que contiene el comando.

Volver al principio

Referencias

Para información adicional acerca de recursos y answersto disponibles normalmente hechas preguntas sobre soluciones de Microsoft Outlook, haga clic en los números siguientes de artículo para ver los artículos en el Microsoft Knowledge Base:
146636 (http://support.microsoft.com/kb/146636/EN-US/) OL2000: Preguntas acerca de formularios personalizados y soluciones de Outlook
287530 (http://support.microsoft.com/kb/287530/EN-US/) OL2002: Preguntas acerca de formularios personalizados y soluciones de Outlook

Volver al principio


La información de este artículo se refiere a:
?Microsoft Outlook 2000 Standard Edition
?Microsoft Outlook 2002 Standard Edition

Volver al principio

Palabras clave: 
kbinfo KB201095 KbMtes kbmt

Volver al principio

Traducción automáticaIMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente. Si ve errores y desea ayudar con este esfuerzo, rellene la encuesta en la parte inferior de este artículo.
Haga clic aquí para ver el artículo original (en inglés): 201095 (http://support.microsoft.com/kb/201095/en-us/)

Volver al principio

Seleccione idioma

 

Related Support Centers

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.