CÓMO: Crear un proyecto de automatización mediante MFC y una biblioteca de tipos

Seleccione idioma Seleccione idioma
Id. de artículo: 178749 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo ilustra, en detalle, cómo automatizar la integración de componentes con aplicaciones compatibles con COM, como las aplicaciones de Microsoft Office.

Más información

La sección siguiente muestra cómo puede crear un proyecto MFC. El ejemplo automatiza Microsoft Excel. Puede utilizar los primeros 8 pasos para cualquier proyecto y modificar los pasos del 9 al 15 cuando trabaje con otra aplicación.

Cree un proyecto de automatización

  1. Con Microsoft Developer Studio, inicie un nuevo proyecto "MFC AppWizard (exe)" con el nombre "AutoProject".
  2. En el paso 1 de MFC AppWizard, elija "Dialog Based" como tipo de aplicación y, a continuación, haga clic en Finalizar.

    Aparece el cuadro de diálogo Nueva información de proyecto, donde se indica que las Clases que se crearán incluyen:
          Application: CAutoProjectApp in AutoProject.h and AutoProject.cpp
          Dialog: CAutoProjectDlg in AutoProject.h and AutoProjectDlg.cpp
    						
    Haga clic en Aceptar para crear el proyecto.
  3. El cuadro de diálogo "IDD_AUTOPROJECT_DIALOG" se abre en el área de diseño y edición de Visual Studio. Modifiqúelo según las instrucciones en los próximos dos pasos.
  4. Quite el control de etiqueta (IDC_STATIC) y el botón Cancelar (IDCANCEL).
  5. Cambie el nombre del botón Aceptar a "IDRUN" y el título a "Ejecutar". Cierre el formulario de diseño del cuadro de diálogo AutoProject.rc.
  6. Haga clic en ClassWizard en el menú Ver (o presione CTRL+W).
  7. Seleccione la ficha Mapas de mensajes. Seleccione IDRUN en el cuadro de lista de identificadores de objetos y seleccione "BN_CLICKED" en el cuadro de lista Mensajes. Haga clic en Agregar función y acepte el nombre de función "OnRun". Haga clic en Aceptar para cerrar ClassWizard.

    NOTA
    Este paso agrega una declaración para la función miembro "OnRun()" en al archivo de encabezado llamado AutoProjectDLG.h. Este paso también agrega al archivo AutoProjectDLG.cpp un esqueleto de función de controlador de mensajes vacío llamada CAutoProjectDlg::OnRun().
  8. Haga clic en ClassWizard en el menú Ver (o presione CTRL+W).
  9. Seleccione la ficha Automatización. Haga clic en Agregar clase y seleccione "Desde una biblioteca de tipos". Busque la biblioteca de objetos de la aplicación que desea (para este ejemplo, si está automatizando Excel 97, seleccione la biblioteca de objetos de Microsoft Excel 8.0; la ubicación predeterminada es C:\Archivos de programa\Microsoft Office\Office\Excel8.olb).

    Si está automatizando Microsoft Excel 2000, seleccione la biblioteca de objetos de Microsoft Excel 9.0, cuya ubicación predeterminada es C:\Archivos de programa\Microsoft Office\Office\Excel9.olb.

    Si está automatizando Microsoft Excel 2002 o Microsoft Office Excel 2003, la biblioteca de objetos está incrustada en el archivo Excel.exe. La ubicación predeterminada para Excel.exe en Office 2002 es C:\Archivos de programa\Microsoft Office\Office10\Excel.exe. La ubicación predeterminada para Excel.exe en Office 2003 es C:\Archivos de programa\Microsoft Office\Office11\Excel.exe. Una vez seleccionada la biblioteca de objetos adecuada, haga clic en Abrir. Seleccione todas las clases de la lista Confirmar clases y, a continuación, haga clic en Aceptar.

    NOTA
    El cuadro de lista del cuadro de diálogo Confirmar clases contiene todas las interfaces IDispatch de la biblioteca de tipos de Microsoft Excel (que son casi idénticas a las clases). En la mitad inferior del cuadro de diálogo verá que un archivo de implementación llmado Excel8.cpp contiene contenedores de clase generados derivados de ColeDispatchDriver(), y que el archivo de encabezado de la declaración correspondiente se llama Excel8.h. (Para Excel 2002 y Excel 2003, los archivos se llaman Excel.cpp y Excel.h.)
  10. Haga clic en Aceptar para cerrar el cuadro de diálogo MFC ClassWizard.
  11. Agregue el siguiente código a la función CAutoProjectApp::InitInstance(), que carga y habilita la biblioteca de servicios COM:
          BOOL CAutoProjectApp::InitInstance()
          {
             if(!AfxOleInit())  // Your addition starts here
             {
                AfxMessageBox("Could not initialize COM dll");
                return FALSE;
             }                 // End of your addition
    
             AfxEnableControlContainer();
          .
          .
          .
    
          }
    					
  12. Agregue la siguiente línea a las instrucciones #include que aparecen en la parte superior del archivo de programa AutoProject.cpp:
          #include <afxdisp.h>
    					
  13. Agregue la instrucción de inclusión de excel8.h después de la instrucción de inclusión de stdafx.h, en la parte superior del archivo de programa AutoProjectDlg.cpp:
          #include "stdafx.h"
          #include "excel8.h" // excel.h in the case of Excel 2002 and Excel 2003.
    					
  14. Agregue el código de automatización a CAutoProjectDlg::OnRun(), de forma que aparezca como se muestra a continuación:
          void CAutoProjectDlg::OnRun()
          {
              _Application app;  // app is the Excel _Application object
    
              // Start Excel and get Application object...
             if(!app.CreateDispatch("Excel.Application"))
             {
                AfxMessageBox("Couldn't start Excel.");
             }
             else
             {
                //Make Excel Visible and display a message
              app.SetVisible(TRUE);
              AfxMessageBox ("Excel is Running!");
             }
          }
    					
  15. Genere y ejecute el proyecto. Resultados: al hacer clic en el botón Ejecutar en el cuadro de diálogo, se iniciará Microsoft Excel. Active el cuadro de diálogo Auto_Excel y descarte el cuadro de mensaje. Microsoft Excel se cerrará al finalizar la función CAutoProjectDlg::OnRun(), ya que la variable de aplicación se habrá salido de su ámbito.

Notas adicionales

Una vez que haya agregado al proyecto las clases de una biblioteca de tipos (como hizo anteriormente en el paso 9), observará que se han agregado muchas clases al proyecto. En ClassView, puede hacer doble clic en una clase para ver las funciones miembro de esa clase y, a continuación, hacer doble clic en la función miembro para ver la definición de esa función en el archivo de aplicación Excel8.cpp.

Necesita ir a la definición de una función miembro si desea comprobar un tipo de devolución o si necesita cambiar la implementación de una función. Cuando quiera cambiar una definición de función, recuerde cambiar la declaración en el archivo Excel8.h. Al hacerlo, asegúrese de cambiar la declaración de función correcta. A veces se asigna el mismo nombre a las funciones miembro de varias clases: GetApplication () es un ejemplo de este caso.

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 las aplicaciones de Microsoft Office:
   Aplicación                           Biblioteca de tipos
   --------------------------------------------------

   Microsoft Access 97                   Msacc8.olb
   Microsoft Jet Database 3.5            DAO350.dll
   Microsoft Binder 97                   Msbdr8.olb
   Microsoft Excel 97                    Excel8.olb
   Microsoft Graph 97                    Graph8.olb
   Microsoft Office 97                   Mso97.dll
   Microsoft Outlook 97                  Msoutl97.olb
   Microsoft PowerPoint 97               Msppt8.olb

   Microsoft Word 97                     Msword8.olb
   Microsoft Access 2000                 Msacc9.olb
   Microsoft Jet Database 3.51           DAO360.dll
   Microsoft Binder 2000                 Msbdr9.olb
   Microsoft Excel 2000                  Excel9.olb
   Microsoft Graph 2000                  Graph9.olb
   Microsoft Office 2000                 Mso9.dll
   Microsoft Outlook 2000                Msoutl9.olb
   Microsoft PowerPoint 2000             Msppt9.olb
   Microsoft Word 2000                   Msword9.olb 

   Microsoft Access 2002                 Msacc.olb
   Microsoft Excel 2002                  Excel.exe
   Microsoft Graph 2002                  Graph.exe 
   Microsoft Office 2002                 MSO.dll
   Microsoft Outlook 2002                MSOutl.olb
   Microsoft PowerPoint 2002             MSPpt.olb
   Microsoft Word 2002                   MSWord.olb

   Microsoft Office Access 2003          Msacc.olb
   Microsoft Office Excel 2003           Excel.exe
   Microsoft Graph 2003                  Graph.exe 
   Microsoft Office 2003                 MSO.dll
   Microsoft Office Outlook 2003         MSOutl.olb
   Microsoft Office PowerPoint 2003      MSPpt.olb
   Microsoft Office Word 2003            MSWord.olb
				
NOTA
La ubicación predeterminada de estas bibliotecas de tipos es C:\Archivos de programa\Microsoft Office\Office (para Office 2002 la ruta es C:\...\Office10 y para Office 2003 la ruta es C:\...\Office11), excepto para los archvios Dao350.dll o Dao360.dll y Microsoft Office 10 (MSO.dll). La ubicación predeterminada para Dao350.dll o Dao360.dll es C:\Archivos de programa\Archivos comunes\Microsoft Shared\Dao. La ubicación predeterminada para MSO.dll es C:\Archivos de programa\Archivos comunes\Microsoft Shared\Office10 para Office 2002 y C:\Archivos de programa\Archivos comunes\Microsoft Shared\Office11 para Office 2003.

Referencias

En este artículo se presenta una de las opciones existentes para generar un proyecto con cuadros de diálogo. Si desea consultar documentación más general sobre el proceso de generar un proyecto de VC++ en el entorno Microsoft Developer Studio, existe un excelente tutorial al que puede obtener acceso mediante Visual Studio InfoView. Para tener acceso al tutorial, haga clic en Buscar en el menú Ayuda. Haga clic en la ficha de índice y escriba lo siguiente:
trabajar con proyectos
Haga clic en Mostrar temas. Seleccione el tema "Página de inicio: trabajar con proyectos" y haga clic en Mostrar. Para obtener información adicional acerca de la automatización de aplicaciones Office, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
222101 Find and Use Office Object Model Documentation
O visite el siguiente sitio Web de Microsoft:
http://msdn.microsoft.com/library/en-us/dnoxpta/html/vsofficedev.asp

Propiedades

Id. de artículo: 178749 - Última revisión: martes, 18 de abril de 2006 - Versión: 4.0
La información de este artículo se refiere a:
  • Microsoft Foundation Class Library 4.2 sobre las siguientes plataformas
    • Microsoft Visual C++ 5.0 Standard
    • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
Palabras clave: 
kbautomation kbhowto kbinterop KB178749

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