MFC gebruiken om een matrix ophalen met een bereik in Excel 2000 en Excel 2002 en Excel 2000 en Excel 2002 automatiseren

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 186122 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

In dit artikel wordt beschreven hoe Microsoft Excel automatiseren en de waarden opvragen van een bereik met meerdere cellen naar een matrix.

Meer informatie

De waarden opvragen van een meerdere cellen ber eik zonder de cellen één voor één zoeken, moet u de functie GetValue lid van de Range-object dat de waarden naar een VARIANT. U vervolgens maken een SAFEARRAY op basis van de VARIANT die u GetValue opvraagt. Zodra u de SAFEARRAY toegang tot de elementen met behulp van GetElement. De volgende stappen illustreren Dit proces en demonstreren hoe u toegang hebt tot zowel de teken reeks als numerieke elementen.

Notities voor het automatiseren van Microsoft Excel 2000 en 2002

Class wrappers die zijn gegenereerd door de voorbeeldcode in dit artikel wordt gebruikt in de objectbibliotheek van Excel 97 (Excel-8.olb). Met een kleine wijziging dit code kan worden toegepast op een automatiserings client die gebruikmaakt van class wrappers voor Excel 2000 (Excel9. olb) of Excel 2002 (Excel.olb).Voor meer informatie over het gebruik van de voorbeeldcode in dit artikel beschreven met Microsoft Excel 2000 of 2002 type bibliotheek, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
224925INFO: Type bibliotheken voor Office wijzigen met de nieuwe Release

Stappen om Project te maken

  1. Maak een nieuwe werkmap in Microsoft Excel. Cellen vullen A1:C8 met een mengsel van teken reeks als numerieke gegevens. De werkmap opslaan als "c:\test.xls" en Microsoft Excel afsluiten.
  2. Volg de stappen 1 tot en met 12 in het volgende artikel in de Microsoft Knowledge Base naar een voorbeeldproject die gebruikmaakt van het IDispatch maken interfaces en lidfuncties die zijn gedefinieerd in de Excel8. olb-typebibliotheek:
    178749Het automatiserings Project maken met MFC en een typebibliotheek
  3. Toevoegen aan het begin van het bestand AutoProjectDlg. cpp de de volgende regel:
          #include "excel8.h"
    					
  4. Voeg de volgende code naar CAutoProjectDlg::OnRun() in de Bestand AutoProjectDlg. cpp:

    Voorbeeldcode

          // 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. Het project compileren en uitvoeren.
  6. Klik op uitvoeren. De waarden in cellen A1:C8 worden weer gegeven in de Het venster uitvoer.

Referenties

Voor meer informatie over het automatiseren van Microsoft Excel met gebruikmaking van MFC, klik op de volgende artikel nummers om de artikelen in de Microsoft Knowledge Base:
186120MFC gebruiken om Excel te automatiseren en een bereik met een matrix opvullen
184663Hoe insluiten en automatiseren van Microsoft Excel-werkblad met MFC
179706MFC gebruiken om Excel te automatiseren en een nieuwe werkmap maken/indeling
178781Automatiseren met MFC en werk blad functies van Excel
178783PROCEDURE: MFC gebruiken om een Microsoft Excel-grafiek maken
167668Een SafeArray zijn teken reeksen doorgeven in een VARIANT *

Eigenschappen

Artikel ID: 186122 - Laatste beoordeling: zondag 18 september 2011 - Wijziging: 4.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
Trefwoorden: 
kbprogramming kbfunctions kbautomation kbhowto kbinterop kbmt KB186122 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:186122

Geef ons feedback

 

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