Come usare una libreria dei tipi per Automazione di Office da Visual C++.NET

Riepilogo

Questo articolo descrive come compilare un progetto Visual C++ .NET che funge da client di automazione per le applicazioni conformi a COM (Component Object Model). L'esempio in questo articolo usa Microsoft Foundation Classes (MFC) con wrapper di classe per un componente di Office.

Ulteriori informazioni

I passaggi seguenti illustrano come creare un client di Automazione semplice. Questa procedura prevede tre passaggi principali:

  1. Creare il client di Automazione.
  2. Aggiungere codice per automatizzare Microsoft Excel.
  3. Eseguire il client di Automazione.

È possibile usare il primo passaggio (Creare il client di automazione) per creare un nuovo client di Automazione indipendentemente dal server di automazione in uso. Il secondo passaggio (Aggiungere codice per automatizzare Microsoft Excel) è specifico per il server di automazione.

Creare un client di Automazione

  1. Avviare Microsoft Visual Studio .NET. Scegliere Nuovo dal menu File e quindi fare clic su Progetto. Selezionare Applicazione MFC dai tipi di progetti Visual C++ e quindi assegnare al progetto il nome AutoProject.

  2. Quando viene visualizzata la Creazione guidata applicazione MFC, fare clic su Tipo di applicazione, impostare il tipo di applicazione su Dialog Based e quindi fare clic su Fine.

  3. Modificare la finestra di dialogo IDD_AUTOPROJECT_DIALOG come indicato di seguito:

    1. Rimuovere il controllo Label (IDC_STATIC) e il pulsante Cancel (IDCANCEL).
    2. Modificare l'ID del pulsante OK in "IDRUN" e la didascalia in "Run".
  4. Creare wrapper di classe dalla libreria dei tipi per il server di automazione come indicato di seguito:

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse su Progetto automatico e quindi scegliere Aggiungi classe.

    2. Fare clic su Classe MFC dalla libreria dei tipi e quindi su Apri.

    3. Fare clic su Aggiungi una classe da Registro di sistema e individuare la libreria dei tipi registrata per il server di Automazione.

      Per questo esempio selezionare "Libreria dei tipi di Microsoft Excel 10.0" per Microsoft ExcelXP o "Libreria dei tipi di Microsoft Excel 9.0" per Microsoft Excel 2000.

    4. Selezionare le interfacce necessarie dall'elenco e quindi fare clic sul simbolo maggiore di (>) per aggiungerle all'elenco di interfacce per cui MFC crea wrapper. Fare clic su Fine dopo aver aggiunto tutte le interfacce.

      Per questo esempio è necessaria solo l'interfaccia _Application.

      Importante Se nella libreria dei tipi sono presenti molte interfacce, selezionare solo le interfacce che verranno usate perché MFC genererà un file di intestazione separato per ogni interfaccia selezionata. Riducendo al minimo le selezioni dell'interfaccia, è possibile evitare sovraccarichi non necessari durante la generazione e la compilazione di file.

  5. Per caricare e abilitare la libreria di servizi COM nella funzione CAutoProjectApp::InitInstance, aggiungere il codice seguente:

    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    
    
  6. Aggiungere una direttiva di inclusione per ogni file di intestazione generato dalle interfacce nella libreria dei tipi del server di automazione. Aggiungere le direttive dopo l'istruzione di inclusione per Stdafx.h nella parte superiore di AutoProjectDlg.cpp.

    Per questo esempio, aggiungere un'inclusione per il file di intestazione CApplication.h, generato per l'interfaccia _Application:

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

Aggiungere codice per automatizzare Microsoft Excel

Nella finestra di dialogo IDD_AUTOPROJECT_DIALOG fare clic con il pulsante destro del mouse su Esegui e quindi scegliere Aggiungi gestore eventi dalla casella di riepilogo a discesa. Nella Creazione guidata gestore eventi selezionare il tipo di messaggio BN_CLICKED e quindi fare clic su Aggiungi e modifica. Aggiungere il codice seguente per automatizzare Excel nel gestore:

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

Eseguire il client di Automazione

Premere F5 per compilare ed eseguire il client di Automazione. Quando viene visualizzata la finestra di dialogo, fare clic su Esegui. Il client di automazione avvia Excel e rende visibile l'applicazione. Si noti che Excel rimane in esecuzione anche al termine del client di Automazione perché all'utente è stato assegnato il controllo dell'applicazione.

Note aggiuntive

Dopo aver aggiunto classi da una libreria dei tipi al progetto, è possibile notare che vengono visualizzate nella visualizzazione classi del progetto. In Visualizzazione classi è possibile fare doppio clic su una classe per visualizzare i metodi di tale classe, quindi fare doppio clic sul metodo per visualizzare la definizione di tale funzione nel file di implementazione del wrapper MFC. È possibile esaminare la definizione di una funzione membro se si vuole verificare un tipo restituito o se è necessario modificare un'implementazione di una funzione.

Anche se i passaggi precedenti illustrano come automatizzare Microsoft Excel, è possibile applicare le stesse idee per automatizzare altre applicazioni. L'elenco seguente contiene i nomi di file per le librerie dei tipi di altre applicazioni di Microsoft Office:

| Applicazione| Libreria dei tipi| |---|---| | Microsoft Access 97| Msacc8.olb| | Database Microsoft Jet 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| | Database Microsoft Jet 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| Nota Il percorso predefinito per queste librerie dei tipi è:

| Versione di Office| Percorso| |---|---| | Office 97| C:\Programmi\Microsoft Office\Office| | Office 2000| C:\Programmi\Microsoft Office\Office| | Office XP| C:\Programmi\Microsoft Office\Office10| | Office 2003| C:\Programmi\Microsoft Office\Office11| |2007 Office| C:\Programmi\Microsoft Office\Office12| Il percorso predefinito per Dao350.dll e Dao360.dll è C:\Programmi\File comuni\Microsoft Shared\Dao.