Excel 2000 ve Excel 2002 otomatikleştirmek ve Excel 2000 ve Excel 2002'de bir aralıktan bir dizi MFC nasıl kullanılır

Makale çevirileri Makale çevirileri
Makale numarası: 186122 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, Microsoft Excel'in otomatik hale getirmek ve değerleri için bir dizi multi-cell bir aralıktan gösterilmiştir.

Daha fazla bilgi

Tek tek hücreleri sorgulama olmadan multi-cell bir aralıktaki değerleri geri dönmek için <a0></a0>, bir VARIANT için değerler döndürmek için <a0>Aralık</a0> nesnesinin GetValue üye işlevini kullanmanız gerekir. Sonra GetValue döndürdü VARYANTıN temel alan bir SAFEARRAY oluşturun. SAFEARRAY sonra öğeleri GetElement kullanarak erişebilirsiniz. Aşağıdaki adımlar, bu işlemi göstermek ve dize hem de sayısal öğeleri nasıl erişebileceğiniz gösterilmiştir.

Microsoft Excel 2000 ve 2002 otomatikleştirmek için notları

Bu makaledeki örnek kod, Excel 97 nesne kitaplığı (Excel 8.olb) üretilen sınıfın sar?c?lar? kullanır. Küçük bir değişiklik yapmadan bu kod, sınıf sar?c?lar? (Excel9.olb) Excel 2000 veya Excel 2002 (Excel.olb) kullanan bir Otomasyon istemcisine uygulanabilir. Bu makalede Microsoft Excel 2000 veya 2002 tür kitaplığı açıklandığı örnek kodu kullanma hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
224925BILGI: Yeni bir sürümü ile Office için tür kitaplıkları Değiştir

Proje oluşturma adımları

  1. Microsoft Excel'de, yeni bir çalışma kitabı oluşturun. Hücreleri doldurmak Bir karışımını dize ve sayısal veri içeren A1:C8. Çalışma kitabını "c:\test.xls" olarak kaydedin ve Microsoft Excel'den çıkın.
  2. 1 Ile 12 kullandığı ıdispatch arabirimi ve üye işlev Excel8.olb Tür kitaplığında tanımlı bir örnek proje oluşturmak için Microsoft Bilgi Bankası, aşağıdaki makalede adımları izleyin:
    178749MFC ve bir tür kitaplığı'nı kullanarak, otomasyon Proje oluşturma
  3. AutoProjectDlg.cpp dosyasının en üstünde, aşağıdaki satırı ekleyin:
          #include "excel8.h"
    					
  4. CAutoProjectDlg::OnRun() AutoProjectDlg.cpp dosyasında aşağıdaki kodu ekleyin:

    Örnek kod

          // 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. Projeyi derleyin ve çalıştırın.
  6. Çalıştır'ı tıklatın. Değerleri hücre A1:C8 Output penceresinde görüntülenir.

Referanslar

Microsoft Excel'in MFC kullanarak otomatikleştirme hakkında daha fazla bilgi için lütfen Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
186120Excel'in otomatikleştirme ve bir dizi olan bir aralık dolgu MFC nasıl kullanılır
184663Katıştırılmış ve bir Microsoft Excel Worksheet MFC ile otomatikleştirme
179706Excel'in otomatikleştirme ve yeni bir çalışma kitabı oluştur/Format MFC nasıl kullanılır
178781Nasıl YAPıLıR: Excel MFC ve çalışma sayfası işlevleri kullanarak otomatikleştirme
178783Nasıl YAPıLıR: MFC bir Microsoft Excel grafiği oluşturmak için kullanın.
167668Bir SafeArray dizeler, bir VARIANT * içinde geçir nasıl

Özellikler

Makale numarası: 186122 - Last Review: 23 Ocak 2007 Salı - Gözden geçirme: 5.1
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbmt kbprogramming kbfunctions kbautomation kbhowto kbinterop KB186122 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:186122

Geri Bildirim Ver

 

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