CÓMO: Utilizar una biblioteca de tipos para Automatización de Office desde Visual C++ .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 307473 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E307473
Expandir todo | Contraer todo

Resumen

En este artículo se describe cómo generar un proyecto de Visual C++ .NET que actúe como cliente de automatización para aplicaciones que son compatibles con el Modelo de objetos componentes (COM, Component Object Model). El ejemplo de este artículo utiliza Microsoft Foundation Classes (MFC) con contenedores de clases para un componente de Office.

Más información

Los pasos siguientes muestran cómo generar un cliente de automatización simple. Hay tres pasos principales en este procedimiento:
  1. Crear el cliente de automatización.
  2. Agregar el código para automatizar Microsoft Excel.
  3. Ejecutar el cliente de automatización.
Puede utilizar el primer paso, , para crear un nuevo cliente de automatización independientemente del servidor de automatización que use. El segundo paso, Agregar código para automatizar Microsoft Excel, es específico del servidor de automatización.

Crear un cliente de automatización

  1. Inicie Microsoft Visual Studio .NET. En el menú Archivo, haga clic en Nuevo y, después, en Proyecto. Seleccione Aplicación MFC en los tipos de proyectos de Visual C++ y, a continuación, denomine AutoProject al proyecto.
  2. Cuando el Asistente para aplicaciones MFC aparezca, haga clic en Tipo de aplicación, establezca el tipo de aplicación en Basado en cuadros de diálogo y, a continuación, haga clic en Finalizar.
  3. Modifique el cuadro de diálogo IDD_AUTOPROJECT_DIALOG como sigue:
    1. Quite el control Label (IDC_STATIC) y el botón Cancel (IDCANCEL).
    2. Cambie el nombre del botón Aceptar por "IDRUN" y el título por "Ejecutar".
  4. Cree los contenedores de clases de la biblioteca de tipos para el servidor de automatización como se indica a continuación:
    1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en AutoProject y, a continuación, haga clic en Agregar clase.
    2. Haga clic en Clase MFC de Typelib y, a continuación, haga clic en Abrir.
    3. Haga clic en Agregar una clase del: Registro y busque la biblioteca de tipos registrados para su servidor de automatización.

      En este ejemplo, seleccione "Biblioteca de tipos de Microsoft Excel 10.0" para Microsoft Excel XP o "Biblioteca de tipos de Microsoft Excel 9.0" para Microsoft Excel 2000.
    4. Seleccione las interfaces que necesita en la lista y, a continuación, haga clic en el símbolo de mayor (>) para agregarlas a la lista de interfaces para las que MFC crea contenedores. Haga clic en Finalizar cuando haya agregado todas las interfaces.

      Para obtener este ejemplo, sólo necesita la interfaz _Application.

      Importante: si hay muchas interfaces en la biblioteca de tipos que eligió, seleccione sólo las que utilizará, ya que MFC generará un archivo de encabezado independiente para cada interfaz seleccionada. Si reduce sus selecciones en la interfaz, puede evitar una sobrecarga innecesaria durante la generación y compilación de los archivos.
  5. Para cargar y habilitar la biblioteca de servicios COM de la función CAutoProjectApp::InitInstance, agregue el código siguiente:
    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    					
  6. Agregue una directiva de inclusión para cada archivo de encabezado que se genera con las interfaces de la biblioteca de tipos del servidor de automatización. Agregue las directivas después de la instrucción include correspondiente a Stdafx.h en la parte superior de AutoProjectDlg.cpp.

    En este ejemplo, agregue una instrucción include para el archivo de encabezado CApplication.h, que se genera para la interfaz _Application:
          #include "stdafx.h"
          #include "CApplication.h"
    					

Agregar el código para automatizar Microsoft Excel

En el cuadro de diálogo IDD_AUTOPROJECT_DIALOG, haga clic con el botón secundario del mouse en Ejecutar y, a continuación, haga clic en Agregar controlador de eventos en el cuadro de lista desplegable. En el Asistente para controladores de eventos, seleccione el tipo de mensaje BN_CLICKED y, a continuación, haga clic en Agregar y modificar. Agregue el código siguiente para automatizar Excel en el controlador:
void CAutoProjectDlg::OnBnClickedRun()
{
   CApplication app;  // app is the Excel _Application object

   // Start Excel and get Application object.

   if(!app.CreateDispatch("Excel.Application"))
   {
      AfxMessageBox("Cannot start Excel and get Application object.");
      return;
   }
   else
   {
      //Make the application visible and give the user control of
      //Microsoft Excel.
      app.put_Visible(TRUE);
      app.put_UserControl(TRUE);
   }
} 
				

Ejecutar el cliente de automatización

Presione la tecla F5 para generar y ejecutar el cliente de automatización. Cuando aparezca el cuadro de diálogo, haga clic en Ejecutar. El cliente de automatización inicia Excel y hace que la aplicación esté visible. Observe que Excel sigue ejecutándose incluso cuando el cliente de automatización finaliza porque se ha cedido al usuario el control de la aplicación.

Notas adicionales

Después de agregar las clases de una biblioteca de tipos a su proyecto, puede observar que aparecen en la Vista de clases del mismo. En la Vista de clases puede hacer doble clic en una clase para ver los métodos de esa clase y, a continuación, hacer doble clic en el método para ver la definición de esa función en el archivo de implementación del contenedor MFC. Puede revisar la definición de una función miembro si desea comprobar el tipo que devuelve o si necesita cambiar su implementación.

Aunque los pasos anteriores ilustran cómo automatizar Microsoft Excel, puede aplicar las mismas ideas para automatizar otras aplicaciones. La siguiente lista contiene los nombres de archivo de las bibliotecas de tipos de otras aplicaciones de Microsoft Office:
Contraer esta tablaAmpliar esta tabla
ApplicationBiblioteca de tipos
Microsoft Access 97Msacc8.olb
Microsoft Jet Database 3.5DAO350.dll
Microsoft Binder 97Msbdr8.olb
Microsoft Excel 97Excel8.olb
Microsoft Graph 97Graph8.olb
Microsoft Office 97Mso97.dll
Microsoft Outlook 97Msoutl97.olb
Microsoft PowerPoint 97Msppt8.olb
Microsoft Word 97Msword8.olb
Microsoft Access 2000Msacc9.olb
Microsoft Jet Database 3.51DAO360.dll
Microsoft Binder 2000Msbdr9.olb
Microsoft Excel 2000Excel9.olb
Microsoft Graph 2000 Graph9.olb
Microsoft Office 2000Mso9.dll
Microsoft Outlook 2000Msoutl9.olb
Microsoft PowerPoint 2000Msppt9.olb
Microsoft Word 2000Msword9.olb
Microsoft Access 2002Msacc.olb
Microsoft Excel 2002Excel.exe
Microsoft Graph 2002Graph.exe
Microsoft Office 2002 MSO.dll
Microsoft Outlook 2002MSOutl.olb
Microsoft PowerPoint 2002MSPpt.olb
Microsoft Word 2002MSWord.olb
Microsoft Office Access 2003Msacc.olb
Microsoft Office Excel 2003Excel.exe
Microsoft Office Graph 2003Graph.exe
Microsoft Office 2003MSO.dll
Microsoft Office Outlook 2003MSOutl.olb
Microsoft Office PowerPoint 2003MSPpt.olb
Microsoft Office Word 2003MSWord.olb
Microsoft Office Access 2007Msacc.olb
Microsoft Office Excel 2007Excel.exe
Microsoft Office Graph 2007Graph.exe
2007 Microsoft OfficeMSO.dll
Microsoft Office Outlook 2007MSOutl.olb
Microsoft Office PowerPoint 2007MSPpt.olb
Microsoft Office Word 2007MSWord.olb
Nota: la ubicación predeterminada de estas bibliotecas de tipos es:
Contraer esta tablaAmpliar esta tabla
Versión de OfficeRuta de acceso
Office 97C:\Archivos de programa\Microsoft Office\Office
Office 2000C:\Archivos de programa\Microsoft Office\Office
Office XPC:\Archivos de programa\Microsoft Office\Office10
Office 2003C:\Archivos de programa\Microsoft Office\Office11
2007 OfficeC:\Archivos de programa\Microsoft Office\Office12
La ubicación predeterminada de los archivos Dao350.dll y Dao360.dll es C:\Archivos de programa\Archivos comunes\Microsoft Shared\Dao.

Referencias

Para obtener información más general acerca de Visual C++ .NET, vea el siguiente grupo de noticias Usenet:
Microsoft.public.dotnet.languages.vc
Visite el Centro de ayuda y soporte técnico de Visual C++ .NET en el sitio Web de Microsoft siguiente:
http://support.microsoft.com/default.aspx?xmlid=fh%3BEN-US%3Bvcnet

Propiedades

Id. de artículo: 307473 - Última revisión: martes, 22 de mayo de 2007 - Versión: 8.0
La información de este artículo se refiere a:
  • Microsoft Visual C++ .NET 2002 Standard
  • Microsoft Foundation Class Library 4.2
  • Microsoft Office Professional 2007
  • Microsoft Office Professional Edition 2003
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Office 97 Developer Edition
Palabras clave: 
kbexpertiseinter kbautomation kbhowto kbnewsgrouplink KB307473

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com