كيفية استخدام MFC أتمتة Excel 2000 وفي Excel 2002 للحصول على صفيف من نطاق في Excel 2000 وفي Excel 2002

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية186122
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
توضح هذه المقالة كيفية أتمتة Microsoft Excel قيماً من نطاق multi-cell إلى صفيف.
معلومات أخرى
لإرجاع القيم من نطاق multi-cell بدون استعلام الخلايا واحداً تلو الآخر, يجب عليك استخدام الدالة العضو GetValue الكائن نطاق لإرجاع القيم إلى VARIANT. تنشئ ثم SAFEARRAY استناداً إلى VARIANT الذي تم إرجاعه من GetValue. بعد الحصول على SAFEARRAY يمكنك الوصول إلى العناصر باستخدام GetElement. توضح هذه العملية الخطوات التالية ثم شرح كيفية الوصول إلى كل من سلسلة والعناصر الرقمية.

ملاحظات أتمتة Microsoft Excel 2000 و 2002

يستخدم نموذج التعليمة البرمجية في هذه المقالة wrappers الفئة التي تم إنشاؤها من مكتبة كائنات Excel 97 (8.olb Excel). مع تعديل بسيط يمكن تطبيق هذه التعليمة البرمجية إلى عميل التنفيذ يستخدم wrappers فئة Excel 2000 (Excel9.olb) أو Excel 2002 (Excel.olb). للحصول على معلومات إضافية حول استخدام نموذج التعليمة البرمجية الموضحة في هذه المقالة مع Microsoft Excel 2000 أو مكتبة أنواع 2002 انقر فوق رقم المقالة أدناه لعرضها في "قاعدة المعارف لـ Microsoft:
224925INFO: يجوز تغيير نوع مكتبات لـ Office مع إصدار جديد

الخطوات التالية لإنشاء المشروع

  1. في Microsoft Excel، قم بإنشاء مصنف جديد. تعبئة الخلايا A1:C8 باستخدام خليط من سلسلة بيانات رقمية. حفظ المصنف كـ "c:\test.xls" ثم إنهاء Microsoft Excel.
  2. اتبع الخطوات من 1 إلى 12 في المقالة التالية في Microsoft Knowledge Base إلى إنشاء مشروع نموذج واجهات IDispatch يستخدم و تعريف دالات عضو في مكتبة النوع Excel8.olb:
    178749كيفية إنشاء المشروع التنفيذ استخدام MFC ومكتبة النوع
  3. في أعلى الملف AutoProjectDlg.cpp أضف السطر التالي:
          #include "excel8.h"					
  4. قم بإضافة التعليمة البرمجية التالية إلى CAutoProjectDlg::OnRun() في ملف AutoProjectDlg.cpp:

    رمز نموذج

          // 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. ترجمة المشروع ثم تشغيله.
  6. انقر فوق تشغيل. يتم عرض القيم في الخلايا A1:C8 في الإطار إخراج.
مراجع
للحصول على معلومات إضافية حول أتمتة Microsoft Excel باستخدام MFC انقر فوق أرقام المقالات التالية لعرضها في "قاعدة المعارف لـ Microsoft:
186120كيفية استخدام MFC أتمتة Excel ثم تعبئة نطاق مع صفيف
184663كيفية تضمين أتمتة ورقة عمل Microsoft Excel مع MFC
179706كيفية استخدام MFC إلى أتمتة Excel "و" إنشاء/تنسيق مصنف جديد
178781HOWTO: أتمتة استخدام MFC و دالات ورقة عمل Excel
178783HOWTO: استخدام MFC لإنشاء تخطيط Microsoft Excel
167668كيفية تمرير SafeArray سلاسل في VARIANT *

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 186122 - آخر مراجعة: 12/05/2015 08:42:04 - المراجعة: 5.1

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

  • kbnosurvey kbarchive kbmt kbprogramming kbfunctions kbautomation kbhowto kbinterop KB186122 KbMtar
تعليقات