Jak použít MFC k automatizaci aplikace Excel 2000 a Excel 2002 a získat matici z rozsahu v aplikaci Excel 2000 a Excel 2002

Překlady článku Překlady článku
ID článku: 186122 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek ukazuje, jak automatizovat uzavřený a vrátit hodnoty z rozsahu multi-cell matici.

Další informace

Vrátit hodnoty z rozsahu multi-cell bez dotazování buněk po jednom, musíte použít GetValue členské funkce objektu Range vrátit hodnoty VARIANT. Potom sestavit SAFEARRAY základě VARIANT vrátil GetValue. Jakmile SAFEARRAY, přístup k prvky pomocí GetElement. Následující kroky tohoto procesu ilustrují a ukazují, jak přístup řetězec a číselných prvků.

Poznámky pro automatizování Microsoft Excel 2000 a 2002

Ukázkový kód v tomto článku používá třídy obálky generovaných z aplikace Excel 97 objektu knihovny (Excel 8.olb). Tento kód, s nepatrné změny mohou být použity klientovi automatizace, který používá třídy obálky pro Excel 2000 (Excel9.olb) nebo aplikaci Excel 2002 (Excel.olb) Další informace o použití ukázkového kódu popsané v tomto článku s Microsoft Excel 2000 nebo 2002 typ knihovny klepněte na článek číslo článku databáze Microsoft Knowledge Base:
224925INFORMACE: Typ knihovny pro Office může změnit s novou verzi

Kroky vytvoření projektu

  1. V aplikaci Microsoft Excel vytvořte nový sešit. Vyplnění buněk A1:C8 s směs řetězec a číselná data. Uložte sešit jako "c:\test.xls" a ukončete aplikaci Microsoft Excel.
  2. Postupujte podle kroků 1 až 12 v následujícím článku v databáze Microsoft Knowledge Base vytvořit ukázkový projekt používá rozhraní IDispatch a funkce členů definovaných v knihovně typů Excel8.olb:
    178749Jak vytvořit projekt automatizace pomocí MFC a knihovny typů
  3. Přidejte následující řádek v horní části souboru AutoProjectDlg.cpp:
          #include "excel8.h"
    					
  4. Přidejte následující kód CAutoProjectDlg::OnRun() v souboru AutoProjectDlg.cpp:

    Ukázkový 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. Zkompilujte projekt a spusťte jej.
  6. Klepněte na tlačítko spustit. Hodnoty v A1:C8 buněk jsou zobrazeny v okně výstup.

Odkazy

Další informace o automatizaci pomocí MFC uzavřený klepněte na následující čísla následujících článcích databáze Microsoft Knowledge Base:
186120Použití automatizace Excel a výplně rozsah s Array MFC
184663Jak vložit a automatizovat listu Microsoft Excel s MFC
179706Použití MFC ke formát nebo vytvořit nový sešit a automatizovat Excel
178781Postupy: Použití funkcí sešitu a MFC Excel automatizace
178783Postupy: Použití MFC vytvoření graf Microsoft Excel
167668Jak PASS SafeArray řetězců v VARIANT *

Vlastnosti

ID článku: 186122 - Poslední aktualizace: 23. ledna 2007 - Revize: 5.1
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbprogramming kbfunctions kbautomation kbhowto kbinterop KB186122 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:186122

Dejte nám zpětnou vazbu

 

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