Použití knihovny typů pro automatizaci Office z Visual C++.NET

Souhrn

Tento článek popisuje, jak vytvořit projekt Visual C++ .NET, který funguje jako klient služby Automation pro aplikace, které jsou kompatibilní s modelem COM (Component Object Model). Ukázka v tomto článku používá Microsoft Foundation Classes (MFC) s obálkami třídy pro komponentu Office.

Další informace

Následující kroky ukazují, jak vytvořit jednoduchého klienta Automation. Tento postup má tři hlavní kroky:

  1. Vytvořte klienta služby Automation.
  2. Přidejte kód pro automatizaci Microsoft Excelu.
  3. Spusťte klienta Automation.

Pomocí prvního kroku (vytvoření klienta služby Automation) můžete vytvořit nového klienta Automation bez ohledu na server Automation, který používáte. Druhý krok (Přidání kódu pro automatizaci Microsoft Excelu) je specifický pro server Automation.

Vytvoření klienta služby Automation

  1. Spusťte Microsoft Visual Studio .NET. V nabídce Soubor klikněte na Nový a potom klikněte na Project. Vyberte aplikaci MFC z typů projektů Visual C++ a pojmenujte projekt AutoProject.

  2. Když se zobrazí Průvodce aplikací MFC, klikněte na Typ aplikace, nastavte typ aplikace na Založený na dialogovém okně a potom klikněte na Dokončit.

  3. Upravte dialogové okno IDD_AUTOPROJECT_DIALOG následujícím způsobem:

    1. Odeberte ovládací prvek Popisek (IDC_STATIC) a tlačítko Zrušit (IDCANCEL).
    2. Změňte ID tlačítka OK na IDRUN a titulek na Spustit.
  4. Vytvořte obálky tříd z knihovny typů pro server Automation následujícím způsobem:

    1. V Průzkumník řešení klepněte pravým tlačítkem myši AutoProjecta klepněte na tlačítko Přidat třídu.

    2. Klepněte na položku Mfc třída z Typeliba klepněte na tlačítko Otevřít.

    3. Klikněte na Přidat třídu z registru a vyhledejte zaregistrovanou knihovnu typů pro váš server Automation.

      V tomto příkladu vyberte "Microsoft Excel 10.0 Type Library" pro Microsoft ExcelXP nebo "Microsoft Excel 9.0 Type Library" for Microsoft Excel 2000.

    4. Ze seznamu vyberte rozhraní, která potřebujete, a kliknutím na symbol větší než (>) je přidejte do seznamu rozhraní, pro která knihovna MFC vytváří obálky. Po přidání všech rozhraní klikněte na Tlačítko Dokončit.

      V tomto příkladu potřebujete pouze _Application rozhraní.

      Důležité Pokud je v knihovně typů, kterou jste zvolili, mnoho rozhraní, vyberte pouze rozhraní, která budete používat, protože knihovna MFC vygeneruje samostatný soubor hlaviček pro každé vybrané rozhraní. Minimalizací výběrů rozhraní se můžete vyhnout zbytečné režii při generování a kompilaci souborů.

  5. Pokud chcete načíst a povolit knihovnu služeb MODELU do funkce CAutoProjectApp::InitInstance, přidejte následující kód:

    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    
    
  6. Přidejte direktivu include pro každý soubor hlaviček vygenerovaný z rozhraní v knihovně typů serveru Automation. Přidejte direktivy za příkaz include pro Stdafx.h v horní části souboru AutoProjectDlg.cpp.

    V tomto příkladu přidejte zahrnutí souboru hlaviček CApplication.h, který se vygeneruje pro rozhraní _Application:

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

Přidání kódu pro automatizaci Microsoft Excelu

V dialogovém okně IDD_AUTOPROJECT_DIALOG klikněte pravým tlačítkem myši na příkaz Spustit a potom v rozevíracím seznamu klikněte na příkaz Přidat obslužnou rutinu události. V Průvodci obslužnou rutinou události vyberte typ zprávy BN_CLICKED a klepněte na tlačítko Přidat a upravit. Přidejte následující kód pro automatizaci Excelu v obslužné rutině:

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

Spuštění klienta služby Automation

Stisknutím klávesy F5 sestavte a spusťte klienta Automation. Po zobrazení dialogového okna klikněte na Spustit. Klient služby Automation spustí Excel a zviditelní aplikaci. Všimněte si, že Excel zůstává spuštěný i v případě, že klient služby Automation končí, protože uživateli byla udělena kontrola nad aplikací.

Další poznámky

Po přidání tříd z knihovny typů do projektu si můžete všimnout, že se zobrazí v zobrazení tříd projektu. V zobrazení tříd můžete poklikáním na třídu zobrazit metody této třídy a poklikáním na metodu zobrazit definici této funkce v souboru implementace obálky MFC. Definici členské funkce můžete zkontrolovat, pokud chcete ověřit návratový typ nebo změnit implementaci funkce.

I když předchozí kroky ukazují, jak automatizovat Microsoft Excel, můžete použít stejné nápady k automatizaci jiných aplikací. Následující seznam obsahuje názvy souborů pro knihovny typů jiných aplikací Microsoft Office:

| Aplikace| Knihovna typů| |---|---| | 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| | Microsoft Office 2007|MSO.dll| | Microsoft Office Outlook 2007| MSOutl.olb| | Microsoft Office PowerPoint 2007| MSPpt.olb| | Microsoft Office Word 2007| MSWord.olb| Poznámka: Výchozí umístění pro tyto knihovny typů je:

| Verze Office| Cesta| |---|---| | Office 97| C:\Program Files\Microsoft Office\Office| | Office 2000| C:\Program Files\Microsoft Office\Office| | Office XP| C:\Program Files\Microsoft Office\Office10| | Office 2003| C:\Program Files\Microsoft Office\Office11| |2007 Office| C:\Program Files\Microsoft Office\Office12| Výchozí umístění pro Dao350.dll a Dao360.dll je C:\Program Files\Common Files\Microsoft Shared\Dao.