Verwenden einer Typbibliothek für die Office-Automatisierung aus Visual C++.NET

Zusammenfassung

In diesem Artikel wird beschrieben, wie Sie ein Visual C++ .NET-Projekt erstellen, das als Automatisierungsclient für Anwendungen fungiert, die com-konform sind. Im Beispiel in diesem Artikel werden Microsoft Foundation-Klassen (MFC) mit Klassenwrappern für eine Office-Komponente verwendet.

Weitere Informationen

Die folgenden Schritte veranschaulichen das Erstellen eines einfachen Automatisierungsclients. Es gibt drei Hauptschritte für dieses Verfahren:

  1. Erstellen Sie den Automatisierungsclient.
  2. Fügen Sie Code hinzu, um Microsoft Excel zu automatisieren.
  3. Führen Sie den Automatisierungsclient aus.

Mit dem ersten Schritt (Erstellen des Automatisierungsclients) können Sie unabhängig vom verwendeten Automatisierungsserver einen neuen Automatisierungsclient erstellen. Der zweite Schritt (Code zum Automatisieren von Microsoft Excel hinzufügen) ist spezifisch für den Automatisierungsserver.

Erstellen eines Automatisierungsclients

  1. Starten Sie Microsoft Visual Studio .NET. Klicken Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt. Wählen Sie MFC-Anwendung aus den Visual C++-Projekttypen aus, und nennen Sie das Projekt autoProject.

  2. Wenn der MFC-Anwendungs-Assistent angezeigt wird, klicken Sie auf "Anwendungstyp", legen Sie den Anwendungstyp auf "Dialogbasiert" fest, und klicken Sie dann auf "Fertig stellen".

  3. Ändern Sie das Dialogfeld IDD_AUTOPROJECT_DIALOG wie folgt:

    1. Entfernen Sie das Bezeichnungssteuerelement (IDC_STATIC) und die Schaltfläche "Abbrechen" (IDCANCEL).
    2. Ändern Sie die ID des OKbuttons in "IDRUN" und die Beschriftung in "Ausführen".
  4. Erstellen Sie Klassenwrapper aus der Typbibliothek für den Automatisierungsserver wie folgt:

    1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf "AutoProjekt", und klicken Sie dann auf "Klasse hinzufügen".

    2. Klicken Sie in Typelib auf "MFC-Klasse" und dann auf "Öffnen".

    3. Klicken Sie auf "Klasse hinzufügen aus: Registrierung", und suchen Sie die registrierte Typbibliothek für Ihren Automatisierungsserver.

      Wählen Sie in diesem Beispiel "Microsoft Excel 10.0-Typbibliothek" für Microsoft ExcelXP oder "Microsoft Excel 9.0-Typbibliothek" für Microsoft Excel 2000 aus.

    4. Wählen Sie die benötigten Schnittstellen aus der Liste aus, und klicken Sie dann auf das Größer-als-Symbol (>), um sie der Liste der Schnittstellen hinzuzufügen, für die MFC Wrapper erstellt. Klicken Sie auf "Fertig stellen", wenn Sie alle Schnittstellen hinzugefügt haben.

      In diesem Beispiel benötigen Sie nur die _Application Schnittstelle.

      Wichtig Wenn die von Ihnen ausgewählte Typbibliothek viele Schnittstellen enthält, wählen Sie nur die Schnittstellen aus, die Sie verwenden werden, da MFC eine separate Headerdatei für jede ausgewählte Schnittstelle generiert. Durch Minimieren der Schnittstellenauswahl können Sie unnötigen Aufwand bei der Dateigenerierung und -kompilierung vermeiden.

  5. Fügen Sie den folgenden Code hinzu, um die COM-Dienstbibliothek zur Funktion CAutoProjectApp::InitInstance zu laden und zu aktivieren:

    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    
    
  6. Fügen Sie eine Include-Direktive für jede Headerdatei hinzu, die von den Schnittstellen in der Typbibliothek des Automatisierungsservers generiert wird. Fügen Sie die Direktiven nach der include-Anweisung für "Stdafx.h" am Anfang von "AutoProjectDlg.cpp" hinzu.

    Fügen Sie in diesem Beispiel ein Include für die Headerdatei "CApplication.h" hinzu, die für die _Application Schnittstelle generiert wird:

          #include "stdafx.h"
          #include "CApplication.h"
    
    

Hinzufügen von Code zum Automatisieren von Microsoft Excel

Klicken Sie im Dialogfeld IDD_AUTOPROJECT_DIALOG mit der rechten Maustaste auf "Ausführen", und klicken Sie dann im Dropdown-Listenfeld auf "Ereignishandler hinzufügen". Wählen Sie im Ereignishandler-Assistenten den BN_CLICKED Nachrichtentyp aus, und klicken Sie dann auf "Hinzufügen" und "Bearbeiten". Fügen Sie den folgenden Code hinzu, um Excel im Handler zu automatisieren:

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);
   }
} 

Ausführen des Automatisierungsclients

Drücken Sie F5, um den Automatisierungsclient zu erstellen und auszuführen. Wenn das Dialogfeld angezeigt wird, klicken Sie auf "Ausführen". Der Automatisierungsclient startet Excel und macht die Anwendung sichtbar. Beachten Sie, dass Excel auch dann ausgeführt wird, wenn der Automatisierungsclient beendet wird, da dem Benutzer die Kontrolle über die Anwendung zugewiesen wurde.

Zusätzliche Hinweise

Nachdem Sie Klassen aus einer Typbibliothek zu Ihrem Projekt hinzugefügt haben, stellen Sie möglicherweise fest, dass sie in der Klassenansicht Ihres Projekts angezeigt werden. In der Klassenansicht können Sie auf eine Klasse doppelklicken, um die Methoden dieser Klasse anzuzeigen, und dann auf die Methode doppelklicken, um die Definition dieser Funktion in der Implementierungsdatei des MFC-Wrappers anzuzeigen. Sie können die Definition einer Memberfunktion überprüfen, wenn Sie einen Rückgabetyp überprüfen möchten oder wenn Sie eine Implementierung einer Funktion ändern müssen.

Obwohl die vorherigen Schritte veranschaulichen, wie Microsoft Excel automatisiert wird, können Sie dieselben Ideen anwenden, um andere Anwendungen zu automatisieren. Die folgende Liste enthält die Dateinamen für Typbibliotheken anderer Microsoft Office-Anwendungen:

| Anwendung| Typbibliothek| |---|---| | 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 Office 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| ||| | Microsoft Office Access 2007| Msacc.olb| | Microsoft Office Excel 2007|Excel.exe| | Microsoft Office Graph 2007|Graph.exe| | 2007 Microsoft Office|MSO.dll| | Microsoft Office Outlook 2007| MSOutl.olb| | Microsoft Office PowerPoint 2007| MSPpt.olb| | Microsoft Office Word 2007| MSWord.olb| Hinweis: Der Standardspeicherort für diese Typbibliotheken ist:

| Office-Version| Pfad| |---|---| | Office 97| C:\Programme\Microsoft Office\Office| | Office 2000| C:\Programme\Microsoft Office\Office| | Office XP| C:\Programme\Microsoft Office\Office10| | Office 2003| C:\Programme\Microsoft Office\Office11| |2007 Office| C:\Programme\Microsoft Office\Office12| Der Standardspeicherort für Dao350.dll und Dao360.dll ist "C:\Program Files\Common Files\Microsoft Shared\Dao".