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

أساليب لنقل البيانات إلى برنامج Excel من Visual Basic‏

انتهاء دعم Office 2003

لقد أنهت شركة Microsoft دعم Office 2003 في 8 أبريل، 2014. وقد أثر هذا التغيير على تحديثات البرامج لديك وخيارات الأمان الخاصة بك. تعرف على ما يعنيه ذلك فيما يتعلق بك وكيفية الحفاظ على حمايتك.

الموجز
تتناول هذه المقالة أساليب متعددة لنقل البيانات إلى برنامج Microsoft Excel من تطبيق Microsoft Visual Basic. وتعرض هذه المقالة أيضًا مزايا كل أسلوب وعيوبه بحيث يمكنك اختيار الحل الأمثل بالنسبة لك.
معلومات أخرى
يُعد "التنفيذ التلقائي" أكثر الأساليب المستخدمة شيوعًا لنقل البيانات إلى مصنف Excel. يتيح لك التنفيذ التلقائي أكبر قدر من المرونة لتحديد موقع البيانات الخاصة بك في المصنف بالإضافة إلى إمكانية تنسيق المصنف وتنفيذ إعدادات كثيرة في وقت التشغيل. ويمكن استخدام العديد من الأساليب لنقل البيانات الخاصة بك مع "التنفيذ التلقائي".
  • نقل البيانات خلية بعد خلية
  • نقل البيانات الموجودة في صفيف إلى نطاق من الخلايا
  • نقل البيانات الموجودة في مجموعة سجلات ADO إلى نطاق من الخلايا باستخدام الأسلوب CopyFromRecordset
  • إنشاء جدول استعلام في ورقة عمل Excel تحتوي على نتيجة استعلام في مصدر بيانات OLEDB أو ODBC
  • نقل البيانات إلى الحافظة ثم لصق محتويات الحافظة إلى ورقة عمل Excel
توجد أيضًا أساليب يمكنك استخدامها لنقل البيانات إلى Excel ولا تتطلب التنفيذ التلقائي. في حالة تشغيل تطبيق من جانب الخادم، قد يكون ذلك أسلوبًا جيدًا لإبعاد الجزء الأكبر من معالجة البيانات عن الأجهزة العميلة الخاصة بك. يمكنك استخدام الأساليب التالية لنقل البيانات الخاصة بك بدون "التنفيذ التلقائي":
  • نقل البيانات الخاصة بك إلى ملف نصي مقسوم بفواصل أو بعلامات جدولة يمكن لبرنامج Excel توزيعه لاحقًا إلى خلايا في ورقة عمل
  • نقل البيانات الخاصة بك إلى ورقة عمل باستخدام ADO
  • نقل البيانات إلى برنامج Excel باستخدام التبادل الديناميكي للبيانات (DDE)
توفر الأقسام التالية مزيدًا من التفاصيل حول كل حل من هذه الحلول.

ملاحظة عند استخدام برنامج Microsoft Office Excel 2007، يمكنك استخدام تنسيق الملف Excel 2007 Workbook ‏(‎*.xlsx) الجديد عند حفظ أوراق العمل. للقيام بذلك، حدد موقع السطر التالي من التعليمة البرمجية في أمثلة التعليمات البرمجية التالية:
oBook.SaveAs "C:\Book1.xls"‎
استبدل هذه التعليمة البرمجية بالسطر التالي من التعليمة البرمجية:
oBook.SaveAs "C:\Book1.xlsx"‎
بالإضافة إلى ذلك، لا يتم تضمين قاعدة بيانات Northwind في Office 2007 افتراضيًا. على الرغم من ذلك، يمكنك تنزيل قاعدة بيانات Northwind من Microsoft Office Online.

استخدام التنفيذ التلقائي لنقل البيانات خلية بعد خلية

باستخدام التنفيذ التلقائي، يمكنك نقل البيانات إلى خلية ورقة عمل واحدة في كل مرة:
   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   ‎'Start a new workbook in Excel   Set oExcel = CreateObject("Excel.Application")‎   Set oBook = oExcel.Workbooks.Add   ‎'Add data to cells of the first worksheet in the new workbook   Set oSheet = oBook.Worksheets(1)‎   oSheet.Range("A1").Value = "Last Name"‎   oSheet.Range("B1").Value = "First Name"‎   oSheet.Range("A1:B1").Font.Bold = True   oSheet.Range("A2").Value = "Doe"‎   oSheet.Range("B2").Value = "John"‎   ‎'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"‎   oExcel.Quit
يمكن أن يكون نقل البيانات خلية بعد خلية هو الأسلوب المقبول الأمثل إذا كان حجم البيانات صغيرًا. ولديك المرونة الكافية لوضع البيانات في أي مكان في المصنف كما يمكنك تنسيق الخلايا بالشكلٍ المناسب في وقت التشغيل. على الرغم من ذلك، هذا الأسلوب غير مستحسن في حالة وجود بيانات بحجم كبير تريد نقلها إلى مصنف Excel. ينتج عن كل كائن Range تحصل عليه في وقت التشغيل طلب واجهة بحيث يمكن أن يكون نقل البيانات بهذه الطريقة بطيئًا. بالإضافة إلى ذلك، فإن طلبات الواجهة مقيدة بحجم ٦٤ كيلو في نظامي التشغيل Microsoft Windows 95 وWindows 98. وعند وصول طلبات الواجهة إلى ٦٤ كيلو أو تجاوزها لهذا الحجم، قد يتوقف خادم "التنفيذ التلقائي" (Excel) عن الاستجابة أو قد تتلقى أخطاء تشير إلى أن الذاكرة غير كافية. تتم مناقشة هذه القيود في نظامي التشغيل Windows 95 وWindows 98 في مقالة "قاعدة المعارف" التالية (قد تحتوي هذه المقالة على ارتباطات إلى محتوى باللغة الإنجليزية (محتوى لم تتم ترجمته بعد)):
216400 ‏PRB: احتمال حدوث تعليق في تطبيق العميل في نظامي التشغيل Win 95/98 بسبب التنفيذ التلقائي لـ COM خارج حدود العمليات
ومرة أخرى، يعد نقل البيانات خلية بعد خلية مقبولاً فقط للبيانات قليلة الحجم. إذا كنت تريد نقل مجموعات بيانات كبيرة الحجم إلى Excel، يجب وضع أحد الحلول التي يتم توفيرها لاحقًا في الاعتبار.

للحصول على مزيد من الأمثلة على التعليمات البرمجية للتنفيذ التلقائي لبرنامج Excel، الرجاء مراجعة المقالة التالية في "قاعدة معارف Microsoft" (قد تحتوي هذه المقالة على ارتباطات إلى محتوى باللغة الإنجليزية (محتوى لم تتم ترجمته بعد)):
219151 كيفية تنفيذ Microsoft Excel تلقائيًا من Visual Basic

استخدام التنفيذ التلقائي لنقل صفيف بيانات إلى نطاق في ورقة عمل

يمكن نقل صفيف بيانات إلى نطاق من خلايا متعددة مرة واحدة:
   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   ‎'Start a new workbook in Excel   Set oExcel = CreateObject("Excel.Application")‎   Set oBook = oExcel.Workbooks.Add   ‎'Create an array with 3 columns and 100 rows   Dim DataArray(1 To 100, 1 To 3) As Variant   Dim r As Integer   For r = 1 To 100      DataArray(r, 1) = "ORD" & Format(r, "0000")‎      DataArray(r, 2) = Rnd() * 1000      DataArray(r, 3) = DataArray(r, 2) * 0.7   Next   ‎'Add headers to the worksheet on row 1   Set oSheet = oBook.Worksheets(1)‎   oSheet.Range("A1:C1").Value = Array("Order ID", "Amount", "Tax")‎   ‎'Transfer the array to the worksheet starting at cell A2   oSheet.Range("A2").Resize(100, 3).Value = DataArray      ‎'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"   oExcel.Quit
في حالة نقل البيانات الخاصة بك باستخدام صفيف بدلاً من استخدام أسلوب خلية بعد خلية، يمكنك ملاحظة قوة الأداء عند نقل بيانات بحجم كبير جدًا. لاحظ هذا السطر من التعليمة البرمجية المذكورة أعلاه والذي ينقل بيانات إلى ٣٠٠ خلية في ورقة العمل:
   oSheet.Range("A2").Resize(100, 3).Value = DataArray
يمثل هذا السطر طلبي واجهة (أحدهما للكائن Range الذي يقوم بإرجاعه الأسلوب Range وآخر للكائن Range الذي يقوم بإرجاعه الأسلوب Resize). من ناحية أخرى، قد يتطلب نقل البيانات باستخدام الأسلوب خلية بعد خلية طلبات لثلاثمائة واجهة لكائنات Range. عندما يكون ذلك ممكنًا، يمكنك الاستفادة من نقل البيانات الخاصة بك بأحجام كبيرة وتقليل عدد طلبات الواجهة التي تقوم بطلبها.

استخدام التنفيذ التلقائي لنقل مجموعة سجلات ADO إلى نطاق ورقة عمل

قدم برنامج Excel 2000 الأسلوب CopyFromRecordset الذي يتيح لك نقل مجموعة سجلات ADO (أو DAO) إلى نطاق في ورقة عمل. وتوضح التعليمة البرمجية التالية كيف يمكنك تنفيذ Excel 2000 أو Excel 2002 أو Office Excel 2003 تلقائيًا ونقل محتويات جدول Orders الموجود في Northwind Sample Database (قاعدة بيانات نموذج Northwind) باستخدام الأسلوب CopyFromRecordset.
   ‎'Create a Recordset from all the records in the Orders table   Dim sNWind As String   Dim conn As New ADODB.Connection   Dim rs As ADODB.Recordset   sNWind = _‎      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _‎      sNWind & ";"   conn.CursorLocation = adUseClient   Set rs = conn.Execute("Orders", , adCmdTable)‎      ‎'Create a new workbook in Excel   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   Set oExcel = CreateObject("Excel.Application")‎   Set oBook = oExcel.Workbooks.Add   Set oSheet = oBook.Worksheets(1)‎      ‎'Transfer the data to Excel   oSheet.Range("A1").CopyFromRecordset rs      ‎'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"‎   oExcel.Quit      ‎'Close the connection   rs.Close   conn.Close
ملاحظة في حالة استخدام الإصدار Office 2007 من قاعدة بيانات Northwind، يجب استبدال السطر التالي من التعليمة البرمجية في مثال التعليمة البرمجية:
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ sNWind & ";"‎
استبدل هذا السطر من التعليمة البرمجية بالسطر التالي من التعليمة البرمجية:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ sNWind & ";"‎
يوفر برنامج Excel 97 أيضًا أسلوب CopyFromRecordset، ولكن يمكنك استخدامه فقط مع مجموعة سجلات DAO. لا يوفر CopyFromRecordset مع برنامج Excel 97 الدعم لـ ADO.

للحصول على مزيد من المعلومات حول استخدام ADO والأسلوب CopyFromRecordset، الرجاء مراجعة المقالة التالية في "قاعدة معارف Microsoft" (قد تحتوي هذه المقالة على ارتباطات إلى محتوى باللغة الإنجليزية (محتوى لم تتم ترجمته بعد)):
246335 كيفية نقل البيانات من مجموعة سجلات ADO إلى برنامج Excel باستخدام التنفيذ التلقائي

استخدام التنفيذ التلقائي لإنشاء جدول استعلام في ورقة عمل

يمثل كائن جدول الاستعلام جدول تم إنشاؤه من البيانات التي تم إرجاعها من مصدر بيانات خارجي. أثناء التنفيذ التلقائي لبرنامج Microsoft Excel، يمكنك إنشاء جدول استعلام بسهولة من خلال توفير سلسلة اتصال لمصدر بيانات ODBC أو OLEDB مع سلسلة SQL. ويكون Excel مسؤولاً عن إنشاء مجموعة السجلات وإدراجها في ورقة العمل في الموقع الذي تقوم بتحديده. يوفر استخدام جداول الاستعلام العديد من المزايا التي لا تتوفر في الأسلوب CopyFromRecordset:
  • قيام Excel بمعالجة إنشاء مجموعة السجلات ووضعها في ورقة العمل.
  • إمكانية حفظ الاستعلام مع جدول الاستعلام بحيث يمكن تحديثه في وقت لاحق للحصول على مجموعة سجلات مُحدّثة.
  • عند إضافة جدول استعلام جديد إلى ورقة العمل الخاصة بك، يمكن تحديد وجود البيانات بالفعل في خلايا في ورقة العمل التي سيتم إزاحتها لملاءمة البيانات الجديدة (راجع الخاصية RefreshStyle للحصول على تفاصيل).
توضح التعليمة البرمجية التالية كيف يمكنك تنفيذ Excel 2000 أو Excel 2002 أو Office Excel 2003 تلقائيًا لإنشاء جدول استعلام جديد في ورقة عمل Excel باستخدام بيانات من Northwind Sample Database (قاعدة بيانات نموذج Northwind):
   ‎'Create a new workbook in Excel   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   Set oExcel = CreateObject("Excel.Application")‎   Set oBook = oExcel.Workbooks.Add   Set oSheet = oBook.Worksheets(1)‎      ‎'Create the QueryTable   Dim sNWind As String   sNWind = _‎      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"   Dim oQryTable As Object   Set oQryTable = oSheet.QueryTables.Add( _‎   "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _‎      sNWind & ";", oSheet.Range("A1"), "Select * from Orders")‎   oQryTable.RefreshStyle = xlInsertEntireRows   oQryTable.Refresh False      ‎'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"‎   oExcel.Quit

استخدام الحافظة

يمكن أيضًا استخدام حافظة Windows كآلية لنقل البيانات إلى ورقة عمل. للصق البيانات في خلايا متعددة في ورقة عمل، يمكنك نسخ سلسلة تكون أعمدتها محددة بأحرف علامات جدولة وصفوفها محددة بعلامات رجوع إلى أول السطر. توضح التعليمة البرمجية التالية كيف يمكن لتطبيق Visual Basic استخدام كائن Clipboard (الحافظة) الخاص به لنقل بيانات إلى برنامج Excel:
   ‎'Copy a string to the clipboard   Dim sData As String   sData = "FirstName" & vbTab & "LastName" & vbTab & "Birthdate" & vbCr _‎           & "Bill" & vbTab & "Brown" & vbTab & "2/5/85" & vbCr _‎           & "Joe" & vbTab & "Thomas" & vbTab & "1/1/91"   Clipboard.Clear   Clipboard.SetText sData      ‎'Create a new workbook in Excel   Dim oExcel As Object   Dim oBook As Object   Set oExcel = CreateObject("Excel.Application")‎   Set oBook = oExcel.Workbooks.Add      ‎'Paste the data   oBook.Worksheets(1).Range("A1").Select   oBook.Worksheets(1).Paste      ‎'Save the Workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls"‎   oExcel.Quit

إنشاء ملف نص محدد يمكن لبرنامج Excel توزيعه في صفوف وأعمدة

يمكن لبرنامج Excel فتح ملفات مقسومة بفواصل أو بعلامات جدولة وتوزيع البيانات بشكل صحيح في الخلايا. يمكنك الاستفادة من هذه الميزة عندما تريد نقل كمية كبيرة من البيانات إلى ورقة عمل مع استخدام عدد محدود من عمليات "التنفيذ التلقائي"، إذا كانت هناك حاجة لاستخدامها. قد يكون هذا أسلوبًا جيدًا لتطبيق عميل/خادم نظرًا لإمكانية إنشاء الملف النصي من جانب الخادم. يمكنك بعد ذلك فتح الملف النصي على الجهاز العميل، باستخدام "التنفيذ التلقائي" عندما يكون ذلك مناسبًا.

توضح التعليمة البرمجية التالية كيف يمكنك إنشاء ملف نص مقسوم بفاصلة من مجموعة سجلات ADO:
   ‎'Create a Recordset from all the records in the Orders table   Dim sNWind As String   Dim conn As New ADODB.Connection   Dim rs As ADODB.Recordset   Dim sData As String   sNWind = _‎      "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _‎      sNWind & ";"‎   conn.CursorLocation = adUseClient   Set rs = conn.Execute("Orders", , adCmdTable)‎      ‎'Save the recordset as a tab-delimited file   sData = rs.GetString(adClipString, , vbTab, vbCr, vbNullString)‎   Open "C:\Test.txt" For Output As #1   Print #1, sData   Close #1       ‎'Close the connection   rs.Close   conn.Close      ‎'Open the new text file in Excel   Shell "C:\Program Files\Microsoft Office\Office\Excel.exe " & _‎      Chr(34) & "C:\Test.txt" & Chr(34), vbMaximizedFocus
ملاحظة في حالة استخدام الإصدار Office 2007 من قاعدة بيانات Northwind، يجب استبدال السطر التالي من التعليمة البرمجية في مثال التعليمة البرمجية:
 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _‎      sNWind & ";"‎
استبدل هذا السطر من التعليمة البرمجية بالسطر التالي من التعليمة البرمجية:
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _‎      sNWind & ";"‎
إذا كان الملف الخاص بك بالملحق ‎.CSV، يقوم Excel بفتح الملف بدون عرض "معالج استيراد النص" ويفترض تلقائيًا أن الملف مقسوم بفاصلة. بالمثل، إذا كان الملف الخاص بك بالملحق ‎.TXT، يقوم Excel تلقائيًا بتوزيعه باستخدام محدِّدات علامات جدولة.

في مثال التعليمة البرمجية السابقة، تم تشغيل Excel باستخدام عبارة Shell وتم استخدام اسم الملف كوسيطة سطر أوامر. لم يتم استخدام "التنفيذ التلقائي" في النموذج السابق. على الرغم من ذلك، إذا كنت ترغب في ذلك، يمكنك استخدام أقل قدر من "التنفيذ التلقائي" لفتح الملف النصي وحفظه بتنسيق مصنف Excel:
   ‎'Create a new instance of Excel   Dim oExcel As Object   Dim oBook As Object   Dim oSheet As Object   Set oExcel = CreateObject("Excel.Application")‎          ‎'Open the text file   Set oBook = oExcel.Workbooks.Open("C:\Test.txt")‎      ‎'Save as Excel workbook and Quit Excel   oBook.SaveAs "C:\Book1.xls", xlWorkbookNormal   oExcel.Quit
للحصول على مزيد من المعلومات حول استخدام "إدخال/إخراج الملف" من تطبيق Visual Basic الخاص بك، الرجاء مراجعة المقالة التالية في "قاعدة معارف Microsoft" (قد تحتوي هذه المقالة على ارتباطات إلى محتوى باللغة الإنجليزية (محتوى لم تتم ترجمته بعد)):
172267 نموذج: قيام RECEDIT.VBP بتوضيح إدخال/إخراج الملف في Visual Basic

نقل البيانات إلى ورقة عمل باستخدام ADO

باستخدام موفر Microsoft Jet OLE DB، يمكنك إضافة سجلات لجدول في مصنف Excel موجود. "الجدول" في برنامج Excel هو مجرد نطاق باسم محدد. ويجب أن يحتوي أول صف من النطاق على الرؤوس (أو أسماء الحقول) وتحتوي كافة الصفوف اللاحقة على السجلات. توضح الخطوات التالية كيف يمكنك إنشاء مصنف باستخدام جدول فارغ باسم الجدول.
Excel 97 وExcel 2000 وExcel 2003
  1. افتح مصنفًا جديدًا في Excel.
  2. قم بإضافة الرؤوس التالية إلى الخلايا A1:B1 في الورقة 1:

    A1: FirstName B1: LastName
  3. قم بتنسيق الخلية B1 بمحاذاتها لليسار.
  4. حدد A1:B1.
  5. من القائمة إدراج، اختر أسماء، ثم حدد تعريف. أدخل الاسم الجدول وانقر فوق موافق.
  6. قم بحفظ المصنف الجديد كـ C:\Book1.xls وقم بإنهاء Excel.
لإضافة سجلات إلى الجدول باستخدام ADO، يمكنك استخدام تعليمة برمجية مشابهة لما يلي:
   ‎'Create a new connection object for Book1.xls   Dim conn As New ADODB.Connection   conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _‎      "Data Source=C:\Book1.xls;Extended Properties=Excel 8.0;‎"   conn.Execute "Insert into MyTable (FirstName, LastName)" & _‎      " values ('Bill', 'Brown')"   conn.Execute "Insert into MyTable (FirstName, LastName)" & _‎      ‎" values ('Joe', 'Thomas')"‎   conn.Close
Excel 2007
  1. في Excel 2007، قم بفتح مصنف جديد.
  2. قم بإضافة الرؤوس التالية إلى الخلايا A1:B1 في الورقة 1:

    A1: FirstName B1: LastName
  3. قم بتنسيق الخلية B1 بمحاذاتها لليسار.
  4. حدد A1:B1.
  5. على الشريط، انقر فوق علامة التبويب صيغ، ثم انقر فوق تعريف اسم. اكتب الاسم الجدول، ثم انقر فوق موافق.
  6. قم بحفظ المصنف الجديد كـ C:\Book1.xlsx، ثم قم بإنهاء Excel.
لإضافة سجلات لـ "الجدول" باستخدام ADO، استخدم تعليمة برمجية مشابهة لمثال التعليمة البرمجية التالية:
   ‎'Create a new connection object for Book1.xls   Dim conn As New ADODB.Connection   conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _‎      "Data Source=C:\Book1.xlsx;Extended Properties=Excel 12.0;‎"   conn.Execute "Insert into MyTable (FirstName, LastName)" & _‎      ‎" values ('Scott', 'Brown')"‎   conn.Execute "Insert into MyTable (FirstName, LastName)" & _‎      ‎" values ('Jane', 'Dow')"‎   conn.Close
عند إضافة سجلات للجدول بهذه الطريقة، يتم الحفاظ على تنسيق المصنف. في المثال السابق، تكون الحقول الجديدة التي تمت إضافتها إلى العمود B منسقة بمحاذاة لليسار. يستخدم كل سجل تتم إضافته إلى صف التنسيق الموجود في الصف الذي يعلوه.

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

ملاحظة لا يعمل أسلوب تحديث البيانات في ورقة عمل Excel باستخدام ADO أو DAO في بيئة Visual Basic for Application في Access بعد تثبيت Office 2003 المزود بحزمة الخدمة Service Pack 2 ‏(SP2) أو بعد تثبيت التحديث الخاص بـ Access 2002 المضمن في مقالة "قاعدة معارف Microsoft" رقم ٩٠٤٠١٨. يعمل الأسلوب بشكلٍ جيد في بيئة Visual Basic for Application من تطبيقات Office أخرى، مثل Word وExcel وOutlook. للحصول على مزيد من المعلومات، انقر فوق رقمي المقالتين التاليين لعرضهما في "قاعدة معارف Microsoft" (قد تحتوي هاتان المقالتان على ارتباطات إلى محتوى باللغة الإنجليزية (محتوى لم تتم ترجمته بعد)):
904953 تعذّر تغيير البيانات الموجودة في الجداول المرتبطة بمصنف Excel أو إضافتها أو حذفها في Office Access 2007 أو Office Access 2003 أو Access 2002
904018 وصف التحديث الخاص ببرنامج Access 2002: ١٨ أكتوبر ٢٠٠٥

للحصول على مزيد من المعلومات حول استخدام ADO للوصول إلى مصنف Excel، الرجاء مراجعة المقالة التالية في "قاعدة معارف Microsoft" (قد تحتوي هذه المقالة على ارتباطات إلى محتوى باللغة الإنجليزية (محتوى لم تتم ترجمته بعد)):
195951 كيفية الاستعلام عن بيانات Excel وتحديثها باستخدام ADO من ASP

استخدام DDE لنقل البيانات إلى Excel

DDE هو بديل لـ "التنفيذ التلقائي" كوسيلة للاتصال ببرنامج Excel ونقل البيانات، ولكن بظهور "التنفيذ التلقائي" وCOM، لم يعد DDE الأسلوب المفضل للاتصال بالتطبيقات الأخرى ويجب استخدامه فقط في حالة عدم وجود حل آخر متاح لك.

لنقل البيانات إلى Excel باستخدام DDE، يمكنك:
  • استخدام الأسلوب LinkPoke لتخزين البيانات في نطاق محدد من الخلية (الخلايا)،

    - أو -
  • استخدام الأسلوب LinkExecute لإرسال أوامر سيقوم Excel بتنفيذها.
يوضح مثال التعليمة البرمجية التالية كيفية إنشاء اتصال DDE باستخدام Excel بحيث يمكنك تخزين بيانات في خلايا في ورقة عمل وتنفيذ الأوامر. باستخدام هذا النموذج، لإنشاء اتصال DDE ناجح بالأسلوب LinkTopic Excel|MyBook.xls، يجب أن يكون المصنف الذي يحمل الاسم MyBook.xls مفتوحًا بالفعل في مثيل Excel قيد التشغيل.

ملاحظة عند استخدام Excel 2007، يمكنك استخدام تنسيق ملف ‎.xlsx الجديد لحفظ المصنفات. تأكد من تحديث اسم الملف في مثال التعليمة البرمجية التالي.

ملاحظة في هذا المثال، يمثل Text1 عنصر تحكم Text Box في نموذج Visual Basic:
   ‎'Initiate a DDE communication with Excel   Text1.LinkMode = 0   Text1.LinkTopic = "Excel|MyBook.xls"‎   Text1.LinkItem = "R1C1:R2C3"‎   Text1.LinkMode = 1      ‎'Poke the text in Text1 to the R1C1:R2C3 in MyBook.xls   Text1.Text = "one" & vbTab & "two" & vbTab & "three" & vbCr & _‎                "four" & vbTab & "five" & vbTab & "six"   Text1.LinkPoke      ‎'Execute commands to select cell A1 (same as R1C1) and change the font   ‎'format   Text1.LinkExecute "[SELECT(""R1C1"")]"‎   Text1.LinkExecute "[FONT.PROPERTIES(""Times New Roman"",""Bold"",10)]"‎      ‎'Terminate the DDE communication   Text1.LinkMode = 0
عند استخدام LinkPoke مع Excel، تقوم بتحديد النطاق في علامة ربط عمود-صف (R1C1) لـ LinkItem. في حالة إدخال بيانات إلى عدة خلايا، يمكنك استخدام سلسلة حيث تكون الأعمدة محددة بعلامات جدولة والصفوف محددة بعلامات رجوع إلى أول السطر.

عند استخدام LinkExecute لمطالبة Excel بتنفيذ أمر، يجب إعطاء Excel الأمر ببناء جملة Excel Macro Language (لغة الماكرو الخاصة بـ Excel)‏ (XLM). لا يكون توثيق XLM مضمنًا في إصدارات Excel 97 والإصدارات الأحدث. للحصول على مزيد من المعلومات حول كيفية الحصول على وثائق XLM، الرجاء مراجعة المقالة التالية في "قاعدة معارف Microsoft" (قد تحتوي هذه المقالة على ارتباطات إلى محتوى باللغة الإنجليزية (محتوى لم تتم ترجمته بعد)):
143466 ‏XL97: توفّر ملف Macro97.exe في الخدمات عبر الإنترنت
لا يوصى بـ DDE كحل للاتصال ببرنامج Excel. يوفر "التنفيذ التلقائي" أكبر قدر من المرونة كما يتيح إمكانية الوصول بشكل أكبر إلى الميزات الجديدة التي يجب على Excel توفيرها.
مراجع
لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft" (قد تحتوي هذه المقالة على ارتباطات إلى محتوى باللغة الإنجليزية (محتوى لم تتم ترجمته بعد)):
306022 كيفية نقل البيانات إلى مصنف Excel باستخدام Visual Basic .NET
Windows 98 excel automation limitations vb XL2007
خصائص

رقم الموضوع: 247412 - آخر مراجعة: 11/21/2007 19:12:00 - المراجعة: 8.0

Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft Visual Basic for Applications 5.0, Microsoft Visual Basic for Applications 6.0, Microsoft Visual Basic 6.0 Enterprise Edition, Microsoft Visual Basic 6.0 Professional Edition

  • kbinfo kbautomation kbdde KB247412
تعليقات
l>tps://c1.microsoft.com/c.gif?DI=4050&did=1&t=">&t=">=">/html>