أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

إن المستعرض الذي تستخدمه غير معتمد

إنك تحتاج إلى تحديث المستعرض لاستخدام الموقع.

التحديث إلى أحدث إصدار من Internet Explorer

كيفية أتمتة Excel من MFC و Visual C++ 2005 أو Visual C++ .NET تعبئة أو الحصول على البيانات في نطاق باستخدام الصفائف

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

اضغط هنا لرابط المقالة باللغة الانجليزية308407
للحصول على إصدار Microsoft C# .NET من هذه المقالة، راجع 302096.
للحصول على إصدار Microsoft Visual Basic .NET من هذه المقالة، راجع 302094.
ملاحظة يعتمد Microsoft Visual C++ 2005 و Microsoft Visual C++ .NET 2003 Microsoft Visual C++ .NET 2002 كل نموذج التعليمات البرمجية المدارة التي تم توفيرها من قبل Microsoft .NET Framework و نموذج التعليمات البرمجية غير المُدارة Microsoft Windows الأصلي. تنطبق المعلومات الواردة في هذه المقالة فقط على غير مدار Visual C++ التعليمات البرمجية.
الموجز
توضح هذه المقالة خطوة بخطوة حول كيفية أتمتة Microsoft Excel من Visual C++ 2005 أو Visual C++ .NET تعبئة القيم في نطاق multi-cell واسترداد باستخدام الصفائف.

إنشاء عميل التنفيذ تلقائي لـ Excel

لتعبئة نطاق multi-cell دون ملء الخلايا واحد في وقت يمكنك تعيين الخاصية قيمة الكائن نطاق إلى صفيف ثنائي الأبعاد. وبالمثل، يمكنك استرداد صفيف ثنائي الأبعاد من قيم خلايا متعددة دفعة واحدة باستخدام الخاصية قيمة. توضح الخطوات التالية هذه العملية لكل إعداد و استرداد البيانات باستخدام صفائف ثنائية الأبعاد.
  1. اتبع الخطوات المذكورة في قسم "إنشاء عميل أتمتة" من مقالة معارف التالية لإنشاء عميل التنفيذ أساسي:
    307473كيفية استخدام مكتبة نوع لـ Office التنفيذ من Visual C++ .NET
    في الخطوة 3، إضافة زر ثاني وخانة اختيار إلى النموذج. تغيير معرّف الزر إلى IDC_GETVALUES والتسمية التوضيحية إلى إحضار القيم. تغيير معرّف خانة الاختيار إلى IDC_CHECK والتسمية التوضيحية إلى تعبئة مع سلاسل.

    في الخطوة 4 من المقالة حدد "مكتبة كائنات 10.0 Excel Microsoft" إذا تم أتمتة Excel 2002 من Office XP. الموقع الافتراضي لـ Excel 2002 هو Office\Office10\Excel.exe Files\Microsoft C:\Program. أو حدد "مكتبة كائنات 11.0 Excel Microsoft" إذا تم أتمتة Microsoft Office Excel 2003. الموقع الافتراضي لـ Excel 2003 هو Office\Office11\Excel.exe Files\Microsoft C:\Program. تحديد الواجهات Microsoft Excel التالية:
    • _Application
    • _Workbook
    • _Worksheet
    • نطاق
    • المصنفات
    • أوراق العمل
    في الخطوة 6 إضافة عبارات تضمين # التالية مباشرة بعد التوجيه & # pragma مرة واحدة في Autoprojectdlg.h:
    #include "CApplication.h"#include "CRange.h"#include "CWorkbook.h"#include "CWorkbooks.h"#include "CWorksheet.h"#include "CWorksheets.h"					
  2. إضافة متغيرات العضو العام جهازي التالية إلى فئة CAutoProjectDlg:
    CApplication oExcel;CWorkbook oBook;					
  3. في المربع ، انقر بزر الماوس الأيمن فوق IDC_CHECK وحدد إضافة متغير. اسم متغير m_bFillWithStrings وانقر فوق إنهاء.
  4. في المربع ، انقر نقراً مزدوجاً فوق تشغيل واستبدالها التعليمة البرمجية التالية
    void CAutoProjectDlg::OnBnClickedRun(){	// TODO: Add your control notification handler code here}					
    مع:
    void CAutoProjectDlg::OnBnClickedRun(){	CWorkbooks oBooks;	CWorksheets oSheets;	CWorksheet oSheet;	CRange oRange;	COleVariant covOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);	// If you have not created Excel, create a new instance.	if (oExcel.m_lpDispatch == NULL) {		oExcel.CreateDispatch("Excel.Application");	}	// Show Excel to the user.	oExcel.put_Visible(TRUE);	oExcel.put_UserControl(TRUE);	// Add a new workbook and get the first worksheet in that book.	oBooks = oExcel.get_Workbooks();	oBook = oBooks.Add(covOptional);	oSheets = oBook.get_Worksheets();	oSheet = oSheets.get_Item(COleVariant((short)1));	// Get a range of data.	oRange = oSheet.get_Range(COleVariant("A1"),covOptional);	oRange = oRange.get_Resize(COleVariant((short)5),COleVariant((short)5));	COleSafeArray saRet;	DWORD numElements[2];	numElements[0] = 5;	numElements[1] = 5;	long index[2];	// Create a BSTR or double safe array.	if (m_bFillWithStrings.GetCheck())		saRet.Create(VT_BSTR,2,numElements);	else		saRet.Create(VT_R8,2,numElements);	// Fill the array with data.	for (int iRow = 1; iRow <= 5; iRow++) {		for (int iCol = 1; iCol <= 5; iCol++) {			index[0]=iRow-1;			index[1]=iCol-1;			if (m_bFillWithStrings.GetCheck()) {				CString szTemp;				szTemp.Format("%d|%d",iRow,iCol);				BSTR bstr = szTemp.AllocSysString();				saRet.PutElement(index,bstr);				SysFreeString(bstr);			} else {				double d = iRow * iCol;				saRet.PutElement(index,&d);			}		}	}	// Send the array to Excel.	oRange.put_Value(covOptional,COleVariant(saRet));}					
    ملاحظة في Visual C++ 2005 يجب إضافة الشائعة لغة وقت التشغيل دعم برنامج التحويل البرمجي الخيار (/ clr:oldSyntax) ترجمة نموذج التعليمات البرمجية السابق بنجاح. لإضافة الشائعة لغة وقت التشغيل دعم برنامج التحويل البرمجي الخيار اتبع الخطوات التالية:
    1. انقر فوق المشروع ثم انقر فوق خصائص ProjectName.

      ملاحظةProjectName عنصرًا نائبًا اسم المشروع.
    2. قم بتوسيع خصائص تكوين ثم انقر فوق عام.
    3. في الجزء الأيسر، انقر لتحديد وقت تشغيل اللغة العامة دعم ، البناء القديمة (/ clr:oldSyntax) في وقت تشغيل اللغة العامة التي تعتمد إعدادات المشروع.
    4. انقر فوق تطبيق ، ثم انقر فوق موافق.
    للحصول على مزيد من المعلومات حول وقت تشغيل اللغة العامة خيارات برنامج التحويل البرمجي دعم قم بزيارة موقع المطور Microsoft Network (MSDN) التالي على الويب: هذه الخطوات تنطبق المقالة بالكامل.
  5. الرجوع إلى مربع الحوار وانقر نقراً مزدوجاً فوق إحضار قيم. استبدال التعليمة البرمجية التالية
    void CAutoProjectDlg::OnBnClickedGetvalues(){	// TODO: Add your control notification handler code here}					
    مع:
    void CAutoProjectDlg::OnBnClickedGetvalues(){	CWorksheets oSheets;	CWorksheet oSheet;	CRange oRange;	COleVariant covOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);	// Make sure that Excel has been started.	if (oExcel.m_lpDispatch == NULL) {		AfxMessageBox("Excel has not been started.  Press button1 to start Excel.");		return;	}	// Get the first worksheet.	oSheets = oBook.get_Worksheets();	oSheet = oSheets.get_Item(COleVariant((short)1));	// Set the range of data to retrieve   	oRange = oSheet.get_Range(COleVariant("A1"),COleVariant("E5"));	// Get the data.	COleSafeArray saRet(oRange.get_Value(covOptional));        long iRows;        long iCols;        saRet.GetUBound(1, &iRows);        saRet.GetUBound(2, &iCols);	CString valueString = "Array Data:\r\n";	long index[2];	// Loop through the data and report the contents.	for (int rowCounter = 1; rowCounter <= iRows; rowCounter++) {		for (int colCounter = 1; colCounter <= iCols; colCounter++) {			index[0]=rowCounter;			index[1]=colCounter;		   			COleVariant vData;			saRet.GetElement(index,vData);			CString szdata(vData);            valueString += szdata;			valueString += "\t";				}		valueString += "\r\n";	}	AfxMessageBox(valueString,MB_SETFOREGROUND,NULL);}					

اختبار عميل التنفيذ

  1. اضغط F5 لإنشاء نموذج البرنامج وتشغيله.
  2. انقر فوق تشغيل. البرنامج تبدأ تشغيل Excel مع مصنف جديد ثم بملء A1:E5 الخلايا من ورقة العمل الأولى مع البيانات الرقمية من صفيف.
  3. انقر فوق الحصول على قيم. البرنامج باسترداد البيانات في الخلايا A1:E5 إلى صفيف جديد ويعرض النتائج في مربع رسالة.
  4. حدد تعبئة باستخدام سلاسل ثم انقر فوق "تشغيل" لتعبئة الخلايا A1:E5 بيانات سلسلة.
  5. انقر فوق إحضار قيم عرض قيم السلسلة في مربع رسالة.

استكشاف الأخطاء وإصلاحها

إذا قمت بإضافة wrappers فئة مكتبة كائن Excel باستخدام الخيار ملف في "فئة من TypeLib معالج إضافة" قد تتلقى رسالة خطأ عند استعراض مكتبة الكائنات. لتجنب هذه المشكلة، اكتب المسار الكامل واسم مكتبة الكائن بدلاً من استعراض إلى الملف. للحصول على معلومات إضافية، انقر فوق رقم المقالة أدناه لعرضها في "قاعدة المعارف لـ Microsoft:
311408BUG: 'للقراءة فقط' تحذير عند إضافة فئة MFC من مكتبة
في حالة ظهور رسالة الخطأ التالية عند إنشاء التطبيق نموذج تغيير "DialogBox متغير" في CRange.h إلى "_DialogBox متغير":
تحذير C4003: معلمات غير كافية الفعلي الماكرو 'DialogBoxA'
للحصول على مزيد من المعلومات حول السبب هذا الخطأ راجع مقالة قاعدة البيانات التالية:
311407BUG: تسمية التعارضات يحتوي على وحدات ماكرو API حل لا معالج MFC
مراجع
لمزيد من المعلومات، راجع التالي المطور Microsoft Network (MSDN) موقع ويب:
تطوير Microsoft Office مع Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
للحصول على مزيد من المعلومات حول استخدام صفائف تعيين واسترداد Excel البيانات مع الإصدارات السابقة من Visual Studio, راجع مقالات قاعدة معارف التالية:
186120كيفية استخدام MFC أتمتة Excel ثم تعبئة نطاق مع صفيف
186122كيفية استخدام MFC أتمتة Excel ثم الحصول على صفيف من نطاق
247412INFO: طرق نقل البيانات إلى Excel من Visual Basic
mfc نطاق xl

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

خصائص

رقم الموضوع: 308407 - آخر مراجعة: 01/17/2007 08:45:49 - المراجعة: 6.3

  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • kbmt kbautomation kbhowtomaster KB308407 KbMtar
تعليقات