L'utilizzo di MFC per automatizzare Excel 2000 ed Excel 2002 e ottenere una matrice da un intervallo in Excel 2000 ed Excel 2002

Traduzione articoli Traduzione articoli
Identificativo articolo: 186122 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come automatizzare Microsoft Excel e fare in modo che i valori contenuti in un intervallo vengano restituiti in una matrice.

Informazioni

Per ottenere i valori contenuti in un intervallo di celle senza dover eseguire query nelle singole celle, è necessario utilizzare la funzione membro GetValue dell'oggetto intervallo affinché restituisca i valori a una VARIANT. Quindi si crea un SAFEARRAY basato sulla VARIANT restituita da GetValue. Una volta ottenuto il SAFEARRAY, sarà possibile accedere agli elementi utilizzando GetElement. La seguente procedura viene illustrato questo processo e viene illustrato come accedere a entrambi elementi numerici e stringa.

Note relative all'automazione di Microsoft Excel 2000 e 2002

Nel codice di esempio riportato in questo articolo sono utilizzati wrapper di classe generati dalla libreria degli oggetti di Excel 97 (Excel 8.olb). Con una lieve modifica questo codice può essere applicato a un client di automazione che utilizza wrapper di classe per Excel 2000 (Excel9.olb) o Excel 2002 (Excel.olb). Per ulteriori informazioni sull'utilizzo il codice di esempio descritto in questo articolo con la libreria dei tipi di 2002 o Microsoft Excel 2000, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
224925INFORMAZIONI: Librerie dei tipi per Office Modifica con la nuova versione

Procedura per la creazione del progetto

  1. In Microsoft Excel creare una nuova cartella di lavoro. Popolare le celle A1:C8 con dati stringa e dati numerici. Salvare la cartella di lavoro come "c:\test.xls" e chiudere Microsoft Excel.
  2. Eseguire i passaggi da 1 a 12 descritti nell'articolo della Microsoft Knowledge Base riportato di seguito per creare un progetto di esempio che utilizzi le interfacce IDispatch e le funzioni membro definite nella libreria dei tipi di Excel8.olb:
    178749Come creare il progetto di automazione tramite MFC e una libreria dei tipi
  3. Nella parte superiore del file AutoProjectDlg.cpp, aggiungere la seguente riga:
          #include "excel8.h"
    					
  4. Aggiungere il codice riportato di seguito a CAutoProjectDlg::OnRun() nel file AutoProjectDlg.cpp:

    Codice di esempio

          // OLE Variant for Optional.
          COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
          _Application objApp;
          _Workbook objBook;
          Workbooks objBooks;
          Worksheets objSheets;
          _Worksheet objSheet;
          Range objRange;
          VARIANT ret;
    
          // Instantiate Excel and open an existing workbook.
          objApp.CreateDispatch("Excel.Application");
          objBooks = objApp.GetWorkbooks();
          objBook = objBooks.Open("C:\\Test.xls",
                    VOptional, VOptional, VOptional, VOptional,
                    VOptional, VOptional, VOptional, VOptional,
                    VOptional, VOptional, VOptional, VOptional);
          objSheets = objBook.GetWorksheets();
          objSheet = objSheets.GetItem(COleVariant((short)1));
    
          //Get the range object for which you wish to retrieve the
          //data and then retrieve the data (as a variant array, ret).
          objRange = objSheet.GetRange(COleVariant("A1"), COleVariant("C8"));
          ret = objRange.GetValue();
    
          //Create the SAFEARRAY from the VARIANT ret.
          COleSafeArray sa(ret);
    
          //Determine the array's dimensions.
          long lNumRows;
          long lNumCols;
          sa.GetUBound(1, &lNumRows);
          sa.GetUBound(2, &lNumCols);
    
          //Display the elements in the SAFEARRAY.
          long index[2];
          VARIANT val;
          int r, c;
          TRACE("Contents of SafeArray\n");
          TRACE("=====================\n\t");
          for(c=1;c<=lNumCols;c++)
          {
             TRACE("\t\tCol %d", c);
          }
          TRACE("\n");
          for(r=1;r<=lNumRows;r++)
          {
             TRACE("Row %d", r);
             for(c=1;c<=lNumCols;c++)
             {
                index[0]=r;
                index[1]=c;
                sa.GetElement(index, &val);
                switch(val.vt)
                {
                case VT_R8:
                   {
                      TRACE("\t\t%1.2f", val.dblVal);
                      break;
                   }
                case VT_BSTR:
                   {
                      TRACE("\t\t%s",(CString)val.bstrVal);
                      break;
                   }
    
                case VT_EMPTY:
                   {
                      TRACE("\t\t<empty>");
                      break;
                   }
                }
             }
             TRACE("\n");
          }
    
          //Close the workbook without saving changes
          //and quit Microsoft Excel.
          objBook.Close(COleVariant((short)FALSE), VOptional, VOptional);
          objApp.Quit();
    					
  5. Compilare il progetto ed eseguirlo.
  6. Fare clic sul pulsante Esegui. I valori contenuti nelle celle A1:C8 verranno visualizzati nella finestra Output.

Riferimenti

Per ulteriori informazioni sull'automazione di Microsoft Excel utilizzando MFC, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
186120Utilizzo MFC per automatizzare Excel e riempire un intervallo con una matrice
184663Come incorporare e automatizzare un foglio di lavoro Microsoft Excel con MFC
179706Utilizzo di MFC per automatizzare Excel e creare/formato una nuova cartella di lavoro
178781HOWTO: Automatizzare Excel utilizzando MFC e funzioni del foglio di lavoro
178783HOWTO: Utilizzo di MFC per creare un grafico di Microsoft Excel
167668Come passare un elemento SafeArray di stringhe in un VARIANT *

Proprietà

Identificativo articolo: 186122 - Ultima modifica: martedì 23 gennaio 2007 - Revisione: 5.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
Chiavi: 
kbmt kbprogramming kbfunctions kbautomation kbhowto kbinterop KB186122 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 186122
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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