Ako používať MFC automatizovať Excel 2000 a Excel 2002 a získať pole od rozsah v programe Excel 2000 a Excel 2002

Preklady článku Preklady článku
ID článku: 186122 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok ukazuje ako zautomatizovať programu Microsoft Excel a vráti hodnoty z multi-cell rozsahu pole.

DALSIE INFORMACIE

Vrátiť hodnoty z multi-cell rozsahu bez vytváranie dotazov buniek po jednom, musíte použiť funkciu členských GetValue Rozsah objektu vrátiť hodnoty VARIANT. Potom postaviť SAFEARRAY na základe variantu vrátil z GetValue. Akonáhle budete mať SAFEARRAY, môžete pristupovať prvkov pomocou GetElement. Nasledovné kroky ilustráciu Tento proces a ukázať, ako máte prístup reťazec a numerickej prvky.

Poznámky pre automatizáciu programu Microsoft Excel 2000 a 2002

Vzorky kód v tomto článku používa triedy balíčkov vytvorených z programu Excel 97 Objektová knižnica (Excel 8.olb). S mierne upravenie to kód možno použiť na automatizačných klientov, ktorý používa triedy balíčkov pre program Excel 2000 (Excel9.olb) alebo Excel 2002 (Excel.olb). Ďalšie informácie o používaní vzorového kódu, popísaný v tomto článku s Microsoft Excel 2000 alebo 2002 typ knižnice, kliknutím na nasledujúce číslo článku zobrazte článok v Microsoft Knowledge Base:
224925 INFO: Typ knižnice pre Office môže zmeniť s novou verziou

Postup vytvorenia projektu

  1. V programe Microsoft Excel, vytvoriť nový zošit. Vyplnenie buniek A1:C8 so zmesou reťazec a číselné údaje. Uložiť zošit ako "c:\test.xls" a výstup programu Microsoft Excel.
  2. Postupujte podľa krokov 1 až 12 v nasledujúcom článku v Databázy Microsoft Knowledge Base na vytvorenie vzorky projektu, ktorý používa IDispatch rozhrania a funkcie členské definované v knižnice Excel8.olb typov:
    178749Ako vytvoriť automatizácie projekt pomocou MFC a Type Library
  3. V hornej časti AutoProjectDlg.cpp súboru pridať nasledujúci riadok:
          #include "excel8.h"
    					
  4. Pridať nasledujúci kód do CAutoProjectDlg::OnRun() v AutoProjectDlg.cpp súboru:

    Vzorky kód

          // 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. Zostaviť projekt a spustite ho.
  6. Kliknite na položku Spustiť. Zobrazia sa hodnoty v bunkách A1:C8 v Výstupné okno.

ODKAZY

Ďalšie informácie o automatizácii programu Microsoft Excel pomocou MFC, kliknite prosím nižšie čísla zobrazíte články v Microsoft Knowledge Base:
186120 Ako používať MFC automatizovať Excel a vypĺňať rozsah s poľom
184663 Ako vložiť a automatizovať hárku programu Microsoft Excel s MFC
179706 Ako používať MFC automatizovať Excel a vytvoriť/formát nový zošit
178781HOWTO: Automatizovať použitím MFC a funkcie pracovného hárka programu Excel
178783HOWTO: Použiť MFC na vytvorenie grafu programu Microsoft Excel
167668Ako prejsť SafeArray struny v VARIANT *
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Vlastnosti

ID článku: 186122 - Posledná kontrola: 19. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • 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
Kľúčové slová: 
kbprogramming kbfunctions kbautomation kbhowto kbinterop kbmt KB186122 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:186122

Odošlite odozvu

 

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