Wie Verwenden von MFC zum Automatisieren von Excel 2000 und Excel 2002 und ein Array von einem Bereich in Excel 2000 erhalten und Excel 2002

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 186122 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt wie Sie Microsoft Excel automatisieren und die Werte aus einem aus mehreren Zellen bestehenden Bereich in ein Array zurückgeben.

Weitere Informationen

Um die Werte aus einem aus mehreren Zellen bestehenden Bereich zurückzugeben, ohne die Zellen einzeln-abzufragen, müssen Sie die GetValue-Memberfunktion des Range-Objekts verwenden, um die Werte in ein VARIANT zurückzugeben. Sie erstellen dann ein SAFEARRAY basierend auf den VARIANT, die Sie von GetValue zurückgegeben. Nachdem Sie das SAFEARRAY haben, können Sie die Elemente mit GetElement zugreifen. Die folgenden Schritte erläutern diesen Prozess und veranschaulichen, wie Sie die Zeichenfolge und numerischen Elemente zugreifen können.

Hinweise zur Automatisierung von Microsoft Excel 2000 und 2002

Der Beispielcode in diesem Artikel wird aus der Excel 97-Objekt Bibliothek (Excel 8.olb) generierte Klassenwrapper verwendet. Mit geringfügigen Änderungen kann diesen Code auf einen Automatisierungsclient angewendet werden, der Klassenwrapper für Excel 2000 (Excel9.olb) oder Excel 2002 (Excel.olb) verwendet. Weitere Informationen über den Beispielcode in diesem Artikel mit Microsoft Excel 2000 oder 2002 Typ Bibliothek beschriebenen folgendem Artikel der Microsoft Knowledge Base:
224925INFO: Typbibliotheken für Office können sich mit neuen Version ändern.

Schritte zum Erstellen des Projekts

  1. Erstellen Sie eine neue Arbeitsmappe in Microsoft Excel. Füllen von Zellen A1:C8 mit einer Mischung aus Zeichenfolge und numerische Daten. Speichern Sie die Arbeitsmappe als "c:\test.xls" und beenden Sie Microsoft Excel.
  2. Führen Sie die Schritte 1 bis 12 in der folgenden Artikel in der Microsoft Knowledge Base, verwendet die IDispatch-Schnittstellen und Memberfunktionen, in der Bibliothek Excel8.olb Typ definiert ein Beispielprojekt erstellen:
    178749So erstellen Sie Automatisierungsprojekts mit MFC und einer Typenbibliothek
  3. Fügen Sie am oberen Rand der Datei "AutoProjectDlg.cpp die folgende Zeile:
          #include "excel8.h"
    					
  4. Fügen Sie folgenden Code hinzu CAutoProjectDlg::OnRun() in der Datei "AutoProjectDlg.cpp:

    Beispielcode

          // 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. Kompilieren Sie das Projekt und führen Sie es.
  6. Klicken Sie auf Ausführen. Die Werte in Zellen A1:C8 werden im Ausgabefenster angezeigt.

Informationsquellen

Weitere Informationen zum Automatisieren von Microsoft Excel unter Verwendung von MFC Bitte finden Sie die folgenden der Microsoft Knowledge Base:
186120Verwenden von MFC zum Automatisieren von Excel und Füllen eines Bereichs mit einem Array
184663Einbetten und Automatisieren von einem Microsoft Excel-Arbeitsblatt mit MFC
179706Verwenden von MFC zum Excel automatisieren und eine neue Arbeitsmappe erstellen bzw. Format
178781So wird 's gemacht: Automatisieren Sie Excel mit MFC und Tabellenfunktionen
178783So wird 's gemacht: Verwenden von MFC zum Erstellen einer Microsoft Excel-Diagramm
167668Gewusst wie: übergeben ein SafeArray von Zeichenfolgen in einem VARIANT 1

Eigenschaften

Artikel-ID: 186122 - Geändert am: Dienstag, 23. Januar 2007 - Version: 5.1
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbmt kbprogramming kbfunctions kbautomation kbhowto kbinterop KB186122 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 186122
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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