Τρόπος αυτοματοποίησης του Excel που χρησιμοποιούν συναρτήσεις MFC και φύλλου εργασίας

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 178781 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο περιγράφει τον τρόπο αυτοματοποίησης της εφαρμογής Microsoft Excel 97, το Microsoft Excel 2000, το Microsoft Excel 2002 ή το Microsoft Excel 2003 χρησιμοποιώντας τη βιβλιοθήκη Microsoft Foundation κλάσης (MFC), έκδοση 4.2 (που εγκαθίστανται με το Microsoft Visual C++ εκδόσεις 5.0 και 6.0). Ειδικότερα, το άρθρο αυτό παρουσιάζει πώς μπορείτε να χρησιμοποιήσετε συναρτήσεις φύλλου εργασίας που παρέχονται από ένα πρόσθετο πρόγραμμα όπως το πακέτο εργαλείων ανάλυσης (ATP) και πώς μπορείτε να χρησιμοποιήσετε τις συναρτήσεις φύλλου εργασίας τύπων που είναι ενσωματωμένη στο Microsoft Excel.

Περισσότερες πληροφορίες

Μπορείτε να αντιγράψετε τον κωδικό σε αυτό το άρθρο για τη λειτουργία χειρισμού μηνυμάτων ενός συμβάντος που ορίζεται στο αρχείο .cpp MFC. Ωστόσο, είναι ο σκοπός του κώδικα για να απεικονίσει τη διαδικασία χρησιμοποιώντας τις διασυνδέσεις IDispatch και μέλος συναρτήσεις που ορίζονται με το Excel8.olb για το Excel 97, Excel9.olb για το Excel 2000 και στο Excel.exe για το Excel 2002 και η βιβλιοθήκη τύπων του Excel 2003. Το κυριότερο πλεονέκτημα προέρχεται από την ανάγνωση και την κατανόηση του κώδικα στο παράδειγμα, έτσι ώστε να μπορείτε να τροποποιήσετε το παράδειγμα ή να συντάξετε κώδικα από την αρχή για να αυτοματοποιήσετε μια συνάρτηση φύλλου εργασίας του Microsoft Excel, χρησιμοποιώντας το MFC.

Βήματα για τη δημιουργία του έργου

  1. Ακολουθήστε τα βήματα 1 έως 12 στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft για να δημιουργήσετε ένα έργο δείγμα που χρησιμοποιεί τις διασυνδέσεις IDispatch και μέλος συναρτήσεις που ορίζονται στο Excel8.olb, ή Excel9.olb ή Excel.exe για το Excel 2002 και το Excel 2003 βιβλιοθήκης τύπων:
    178749Τρόπος δημιουργίας ενός έργου αυτοματοποίησης χρησιμοποιώντας το MFC και μια βιβλιοθήκη τύπων
  2. Στο επάνω μέρος του AutoProjectDlg.cpp, προσθέστε την ακόλουθη γραμμή:
          #include "excel8.h"
    					
    Εάν αυτοματοποιείτε το Excel 2000, συμπεριλάβετε excel9.h. Εάν αυτοματοποιείτε το Excel 2002 ή Excel 2003, πρέπει να συμπεριλάβετε excel.h

  3. Προσθέστε τον παρακάτω κώδικα CAutoProjectDlg::OnRun() στο αρχείο AutoProjectDLG.cpp: Δείγμα κώδικα:
          try
          {
          _Application app;     // app is an _Application object.
          _Workbook book;       // More object declarations.
          _Worksheet sheet;
          Workbooks books;
          Worksheets sheets;
    
          Range range;          // Used for Microsoft Excel 97 components.
          LPDISPATCH lpDisp;    // Often reused variable.
    
          // Common OLE variants. Easy variants to use for calling arguments.
          COleVariant
            covTrue((short)TRUE),
            covFalse((short)FALSE),
            covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
          // Start Microsoft Excel, get _Application object,
          // and attach to app object.
          if(!app.CreateDispatch("Excel.Application"))
           {
            AfxMessageBox("Couldn't CreateDispatch() for Excel");
            return;
           }
    
    
          // Set visible.
          app.SetVisible(TRUE);
    
          // Register the Analysis ToolPak.
          CString sAppPath;
    
          sAppPath.Format ("%s\\Analysis\\Analys32.xll", app.GetLibraryPath());
    
          if(!app.RegisterXLL(sAppPath))
            AfxMessageBox("Didn't register the Analys32.xll");
    
          // Get the Workbooks collection.
          lpDisp = app.GetWorkbooks();     // Get an IDispatch pointer.
          ASSERT(lpDisp);
          books.AttachDispatch(lpDisp);    // Attach the IDispatch pointer
                                           // to the books object.
    
          // Open a new workbook and attach that IDispatch pointer to the
          // Workbook object.
          lpDisp = books.Add( covOptional );
          ASSERT(lpDisp);
          book.AttachDispatch( lpDisp );
    
             // To open an existing workbook, you need to provide all
             // arguments for the Open member function. In the case of 
             // Excel 2002 you must provide 16 arguments.
             // However in Excel 2003 you must provide 15 arguments.
             // The code below opens a workbook and adds it to the Workbook's
             // Collection object. It shows 13 arguments, required for Excel
             // 2000.
             // You need to modify the path and file name for your own
             // workbook.
    
          // 
          // lpDisp = books.Open("C:\\Test",     // Test.xls is a workbook.
          // covOptional, covOptional, covOptional, covOptional, covOptional,
          // covOptional, covOptional, covOptional, covOptional, covOptional,
          // covOptional, covOptional );   // Return Workbook's IDispatch
          // pointer.
    
          // Get the Sheets collection and attach the IDispatch pointer to your
          // sheets object.
          lpDisp = book.GetSheets();
          ASSERT(lpDisp);
          sheets.AttachDispatch(lpDisp);
    
          // Get sheet #1 and attach the IDispatch pointer to your sheet
          // object.
          lpDisp = sheets.GetItem( COleVariant((short)(1)) );
                                            //GetItem(const VARIANT &index)
          ASSERT(lpDisp);
          sheet.AttachDispatch(lpDisp);
    
          // Fill range A1 with "1/25/98", the settlement date.
          lpDisp = sheet.GetRange(COleVariant("A1"), COleVariant("A1"));
          ASSERT(lpDisp);
          range.AttachDispatch(lpDisp);
          range.SetValue(COleVariant("1/25/98")); // Excel 97 & Excel 2000
    
    range.SetValue2(COleVariant("1/25/98")); // Excel 2002 and Excel 2003
    
    
          // Fill range A2 with "11/15/99", the maturity date.
          lpDisp = sheet.GetRange(COleVariant("A2"), COleVariant("A2"));
          ASSERT(lpDisp);
          range.AttachDispatch(lpDisp);
          range.SetValue(COleVariant("11/15/99"));  // Excel 97 & Excel 2000
    
    range.SetValue2(COleVariant("11/15/99")); // Excel 2002 and Excel 2003
    
    
          // Fill range A3 with "2", the frequency for semi-annual interest
          // payments.
          lpDisp = sheet.GetRange(COleVariant("A3"), COleVariant("A3"));
          ASSERT(lpDisp);
          range.AttachDispatch(lpDisp);
          range.SetValue(COleVariant("2"));  // Excel 97 & Excel 2000
    
    range.SetValue2(COleVariant("2"));  // Excel 2002 and Excel 2003
    
          // Fill range A4 with 1, the basis (actual/actual).
          lpDisp = sheet.GetRange(COleVariant("A4"), COleVariant("A4"));
          ASSERT(lpDisp);
          range.AttachDispatch(lpDisp);
          range.SetValue(COleVariant("1")); // Excel 97 & Excel 2000
    
    range.SetValue2(COleVariant("1")); // Excel 2002 and  Excel 2003
    
          // Fill range C1 with the formula "=COUPNCD(A1, A2, A3, A4)" and
          // format the cell with a Date type of the Number format.
          lpDisp = sheet.GetRange(COleVariant("C1"), COleVariant("C1"));
          ASSERT(lpDisp);
          range.AttachDispatch(lpDisp);
          range.SetNumberFormat(COleVariant("mm/dd/yy"));
          range.SetFormula(COleVariant("=COUPNCD(A1, A2, A3, A4)"));
    
          /* This is an alternative that works without placing variables on
          // the worksheet.
          // The values are arguments contained in the SetFormula() call.
          // range.SetFormula(COleVariant(
                           "=COUPNCD(\"09/15/96\",\"11/15/99\",2,1)"));
          */ 
    
          // *** The example in this block uses a built-in Microsoft Excel
          // function.
    
          // You do not have to register any add-in to use the built-in
    
          // Microsoft Excel worksheet functions.
          lpDisp = sheet.GetRange(COleVariant("C3"), COleVariant("C3"));
          ASSERT(lpDisp);
          range.AttachDispatch(lpDisp);
          range.SetFormula(COleVariant("=SUM(A3, A4)"));
          // or use:
          // range.SetFormula(COleVariant("=SUM(2,1)"));
    
          // *** End of example for built-in function usage.
    
          // Release dispatch pointers.
          range.ReleaseDispatch();
          sheet.ReleaseDispatch();
          // This is not really necessary because
          // the default second parameter of AttachDispatch releases
          // when the current scope is lost.
    
          } // End of processing.
    
            catch(COleException *e)
          {
            char buf[1024];     // For the Try...Catch error message.
            sprintf(buf, "COleException. SCODE: %08lx.", (long)e->m_sc);
            ::MessageBox(NULL, buf, "COleException", MB_SETFOREGROUND | MB_OK);
          }
    
          catch(COleDispatchException *e)
          {
            char buf[1024];     // For the Try...Catch error message.
            sprintf(buf,
                   "COleDispatchException. SCODE: %08lx, Description: \"%s\".",
                   (long)e->m_wCode,(LPSTR)e->m_strDescription.GetBuffer(512));
            ::MessageBox(NULL, buf, "COleDispatchException",
                               MB_SETFOREGROUND | MB_OK);
          }
    
          catch(...)
          {
            ::MessageBox(NULL, "General Exception caught.", "Catch-All",
                               MB_SETFOREGROUND | MB_OK);
          }
    					

Αναφορές

Για πρόσθετες πληροφορίες σχετικά με τις εφαρμογές αυτοματισμού γραφείου, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
222101ΔΙΑΔΙΚΑΣΙΕΣ: Εύρεση και χρήση της τεκμηρίωσης του μοντέλου αντικειμένου του Office

Ιδιότητες

Αναγν. άρθρου: 178781 - Τελευταία αναθεώρηση: Σάββατο, 18 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Foundation Class Library 4.2 στις ακόλουθες πλατφόρμες
    • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 2002 Standard Edition
Λέξεις-κλειδιά: 
kbautomation kbhowto kbinterop kbmt KB178781 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:178781

Αποστολή σχολίων

 

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