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

الموجز

تتناول هذه المقالة أساليب متعددة لنقل البيانات إلى برنامج 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

خصائص

رقم الموضوع: 247412 - آخر مراجعة: 21‏/11‏/2007 - المراجعة: 1

تعليقات