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

كيفية إنشاء ملقم RealTimeData لـ Excel

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

اضغط هنا لرابط المقالة باللغة الانجليزية285339
الموجز
يوفر Microsoft Excel دالة ورقة عمل جديدة RTD تتيح لك إمكانية استدعاء ملقم أتمتة طراز كائن مكون (COM) من أجل استرداد بيانات الوقت الحقيقي. توضح هذه المقالة كيفية استخدام Visual Basic لإنشاء ملقم RealTimeData للاستخدام بواسطة الدالة RTD في Excel.
معلومات أخرى
تحتوي دالة ورقة العمل RTD بناء الجملة التالي:
= RTD(ProgID,Server,String1,[String2],...)
الوسيطة الأولى ProgID يمثل "معرف البرمجة" (ProgID) لملقم RealTimeData. وسيطة ملقم يشير إلى اسم الجهاز الذي يتم تشغيل ملقم RealTimeData; قد تكون هذه الوسيطة سلسلة خالية أو تم حذفها إذا كان ملقم RealTimeData لتشغيله محلياً. تمثل الوسيطات المتبقية ببساطة معلمات لإرسالها إلى الملقم RealTimeData; يمثل كل مجموعة فريدة من هذه المعلمات واحد "الموضوع"الذي يحتوي على المقترن"معرّف الموضوع." معلمات حساسة لحالة الأحرف. على سبيل المثال، التالية يوضح المكالمات إلى ملقم RTD الذي سيؤدي إلى ثلاثة معرفات الموضوع منفصلة:
= RTD("ExcelRTD.RTDFunctions",,"AAA", "10")

= RTD("ExcelRTD.RTDFunctions",,"AAA", "5")

= RTD("ExcelRTD.RTDFunctions",,"aaa", "5")
من أجل ملقم الأتمتة COM أن الملقم RealTimeData للاستخدام مع الدالة RTD في Excel ، فإنه يجب أن يقوم بتطبيق واجهة IRTDServer. يجب أن تقوم بتنفيذ الملقم كافة أساليب IRTDServer:

ServerStart
استدعاء عندما يطلب Excel موضوع RTD الأول على الملقم. يجب على ServerStart إرجاع 1 على نجاح، "و" قيمة سالبة "أو" 0 عند الفشل. المعلمة الأولى لأسلوب ServerStart هو كائن رد اتصال التي يستخدمها ملقم RealTimeData لإعلام Excel عند يجب تجميع التحديثات من RealTimeData الملقم.
ServerTerminate
استدعاء عندما يتطلب Excel لم يعد مواضيع RTD من ملقم RealTimeData.
ConnectData
استدعاء كلما طلبات Excel موضوع RTD جديد من ملقم RealTimeData.
DisconnectData
استدعاء كلما Excel لن يتطلب موضوع معين.
نبضات
استدعاء بواسطة Excel عند انقضاء الفاصل زمني محدد منذ آخر مرة تم إعلامك Excel تحديثات من خادم RealTimeData.
RefreshData
استدعاء عندما يطلب Excel تحديث على المواضيع. تسمى RefreshData بعد الملقم بإعلام Excel وجود التحديثات ثم تقوم بإرجاع عدد المواضيع لتحديث مع معرف الموضوع وقيمة كل موضوع.

إنشاء ملقم RealTimeData نموذج

يوضح النموذج التالي كيفية إنشاء استخدام ملقم RealTimeData مع Microsoft Excel 2002. تقدم هذا الملقم عداد الذي يتم تحديثه كل 10 ثوانٍ في ورقة عمل. يقبل الملقم حتى سلسلتين الموضوع. يمكن أن تكون السلسلة الموضوع الأولى AAA و BBB CCC تعتبر غير صالحة أي سلسلة الموضوع و الملقم ترجع # VALUE! إلى الدالة RTD. السلسلة الثانية القيمة رقمية التي تمثل كيفية زيادة قيمة الإرجاع. إذا تم حذف السلسلة الثانية الافتراضية قيمة الزيادة 1. في حالة عدم رقمية السلسلة الثانية الملقم بإرجاع # NUM! إلى الدالة RTD.
  1. بدء تشغيل مشروع DLL ActiveX جديد في Visual Basic.
  2. من القائمة المشروع انقر "مراجع" ، حدد "مكتبة كائنات" للحصول على إصدار Excel ثم انقر فوق موافق. على سبيل المثال, حدد أحد الإجراءات التالية:
    • حدد مكتبة كائنات Microsoft Excel 12.0 Microsoft Office Excel 2007.
    • حدد مكتبة كائنات Microsoft Excel 11.0 Microsoft Office Excel 2003.
    • حدد مكتبة كائنات Microsoft Excel 10.0 Microsoft Excel 2002.
  3. من القائمة المشروع انقر فوق خصائص مشروع1. تغيير اسم المشروع إلى ExcelRTD ثم انقر فوق موافق.
  4. تغيير خاصية اسم فئة الوحدة النمطية Class1 إلى RTDFunctions. قم بإضافة التعليمات البرمجية التالية إلى RTDFunctions:
    Option ExplicitImplements IRtdServer  'Interface allows Excel to contact this RealTimeData serverPrivate m_colTopics As Collection    Private Function IRtdServer_ConnectData(ByVal TopicID As Long, Strings() As Variant, GetNewValues As Boolean) As Variant    '** ConnectData is called whenever a new RTD topic is requested        'Create a new topic class with the given TopicId and string and add it to the    'm_colTopics collection    Dim oTopic As New Topic    m_colTopics.Add oTopic, CStr(TopicID)    oTopic.TopicID = TopicID    oTopic.TopicString = Strings(0)    If UBound(Strings) >= 1 Then oTopic.SetIncrement Strings(1)        'For this example, the initial value for a new topic is always 0    IRtdServer_ConnectData = oTopic.TopicValue        Debug.Print "ConnectData", TopicIDEnd FunctionPrivate Sub IRtdServer_DisconnectData(ByVal TopicID As Long)   '** DisconnectData is called whenever a specific topic is not longer needed      'Remove the topic from the collection   m_colTopics.Remove CStr(TopicID)      Debug.Print "DisconnectData", TopicIDEnd SubPrivate Function IRtdServer_Heartbeat() As Long    '** Called by Excel if the heartbeat interval has elapsed since the last time    '   Excel was called with UpdateNotify.    Debug.Print "HeartBeat"End FunctionPrivate Function IRtdServer_RefreshData(TopicCount As Long) As Variant()    '** Called when Excel is requesting a refresh on topics. RefreshData will be called    '   after an UpdateNotify has been issued by the server. This event should:    '   - supply a value for TopicCount (number of topics to update)    '   - return a two dimensional variant array containing the topic ids and the    '     new values of each.       Dim oTopic As Topic, n As Integer    ReDim aUpdates(0 To 1, 0 To m_colTopics.Count - 1) As Variant    For Each oTopic In m_colTopics        oTopic.Update        aUpdates(0, n) = oTopic.TopicID        aUpdates(1, n) = oTopic.TopicValue        n = n + 1    Next    TopicCount = m_colTopics.Count    IRtdServer_RefreshData = aUpdates      Debug.Print "RefreshData", TopicCount & " topics updated"End FunctionPrivate Function IRtdServer_ServerStart(ByVal CallbackObject As Excel.IRTDUpdateEvent) As Long    '** ServerStart is called when the first RTD topic is requested        Set oCallBack = CallbackObject    Set m_colTopics = New Collection    g_TimerID = SetTimer(0, 0, TIMER_INTERVAL, AddressOf TimerCallback)    If g_TimerID > 0 Then IRtdServer_ServerStart = 1       'Any value <1 indicates failure.        Debug.Print "ServerStart"End FunctionPrivate Sub IRtdServer_ServerTerminate()    '** ServerTerminate is called when no more topics are needed by Excel.        KillTimer 0, g_TimerID    '** Cleanup any remaining topics. This is done here since     '   IRtdServer_DisconnectData is only called if a topic is disconnected     '   while the book is open. Items left in the collection when we terminate    '   are those topics left running when the workbook was closed.    Dim oTopic As Topic    For Each oTopic In m_colTopics        m_colTopics.Remove CStr(oTopic.TopicID)        Set oTopic = Nothing    Next    Debug.Print "ServerTerminate"  End Sub					
  5. من القائمة المشروع انقر فوق إضافة وحدة نمطية للفئة. تغيير الخاصية اسم فئة الوحدة النمطية إلى موضوع وتغيير الخاصية Instancing إلى خاص. قم بإضافة التعليمات البرمجية التالية إلى وحدة نمطية للفئة موضوع:
    Option ExplicitPrivate m_TopicID As LongPrivate m_TopicString As StringPrivate m_Value As VariantPrivate m_IncrementVal As LongPrivate Sub Class_Initialize()    m_Value = 0    m_IncrementVal = 1End SubFriend Property Let TopicID(ID As Long)    m_TopicID = IDEnd PropertyFriend Property Get TopicID() As Long    TopicID = m_TopicIDEnd PropertyFriend Property Let TopicString(s As String)    s = UCase(s)    If s = "AAA" Or s = "BBB" Or s = "CCC" Then        m_TopicString = s    Else        m_Value = CVErr(xlErrValue) 'Return #VALUE if not one of the listed topics    End IfEnd PropertyFriend Sub Update()    On Error Resume Next 'the next operation will fail if m_Value is an error (like #NUM or #VALUE)    m_Value = m_Value + m_IncrementValEnd SubFriend Sub SetIncrement(v As Variant)    On Error Resume Next    m_IncrementVal = CLng(v)    If Err <> 0 Then        m_Value = CVErr(xlErrNum) 'Return #NUM if Increment value is not numeric    End IfEnd SubFriend Property Get TopicValue() As Variant    If Not (IsError(m_Value)) Then        TopicValue = m_TopicString & ": " & m_Value    Else        TopicValue = m_Value    End IfEnd Property					
  6. من القائمة المشروع حدد إضافة الوحدة النمطية. قم بإضافة التعليمات البرمجية التالية إلى وحدة نمطية جديدة:
    Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, _ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As LongPublic Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As LongPublic Const TIMER_INTERVAL = 5000Public oCallBack As Excel.IRTDUpdateEventPublic g_TimerID As LongPublic Sub TimerCallback(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)    oCallBack.UpdateNotifyEnd Sub					
  7. من القائمة ملف، انقر فوق جعله ExcelRTD.dll إنشاء المكون.

استخدام ملقم RTD في Excel

  1. بدء تشغيل "مصنف جديد" في Microsoft Excel.
  2. في الخلية A1 ، أدخل الصيغة التالية ومن ثم اضغط المفتاح ENTER:
    = RTD("ExcelRTD.RTDFunctions",,"AAA", 5)
    قيمة الإرجاع الأولي "AAA: 0". تحديث بعد خمس ثوان القيمة إلى "AAA: 10" تحديثات بعد 10 ثوان القيمة إلى "AAA:15" وهكذا.

  3. في الخلية A2 أدخل الصيغة التالية ثم اضغط مفتاح الإدخال ENTER:
    = RTD("ExcelRTD.RTDFunctions",,"BBB", 3)
    قيمة الإرجاع الأولي "BBB: 0". كل خمس ثوانٍ بزيادة قيمة الخلية بواسطة 3.

  4. في الخلية A3 أدخل الصيغة التالية ثم اضغط مفتاح الإدخال ENTER:
    = RTD("ExcelRTD.RTDFunctions",,"AAA", 5)
    تتطابق قيمة الإرجاع الأولي مع محتويات الخلية A1 لأن هذا هو نفس "الموضوع" المستخدمة في A1.

  5. في الخلية A4, أدخل الصيغة التالية ثم اضغط مفتاح الإدخال:
    = RTD("ExcelRTD.RTDFunctions",,"AAA", 10)
    قيمة الإرجاع الأولي "AAA: 0." كل خمسة بالثواني بزيادة قيمة الخلية كما تفعل الخلايا الأخرى. لاحظ أن قيمة الإرجاع غير متطابقة مع محتويات الخلية A1 أو A3 لأن تركيبة المعلمات التي تم تمريرها إلى الملقم آخر.
للحصول على هذا الرسم التوضيحي الملقم RTD التي تم تحويلها برمجياً ثم تم Excel باستخدام إصدار وقت التشغيل من المكون. لأغراض RTD التصحيح يمكن تشغيل الملقمات من IDE Visual Basic.

تشغيل في وضع التصحيح:
  1. إنهاء Microsoft Excel والتبديل إلى المشروع في Visual Basic.
  2. اضغط F5 لتشغيل المكون. إذا ظهر مربع الحوار خصائص المشروع انقر فوق موافق تحديد الخيار الافتراضي من انتظار المكونات المراد إنشاؤه.
  3. تأكد من عرض الإطار الحالي في Visual Basic. عند إدخال الصيغ في الخلايا و كما يتم تحديث الخلايا فحص محتويات الإطار الحالي في Visual Basic لمشاهدة الإجراءات التي يتم تشغيل لأحداث مختلفة.
ملاحظة الخاصة الأحداث DisconnectData

عندما يكون Excel مشترك إلى ملقم RTD ، فإنه بتشغيل الحدث DisconnectData إذا لم يعد بحاجة موضوع (على سبيل المثال، عند حذف أو مسح RTD صيغة في خلية). ومع ذلك، Excel لن باستدعاء DisconnectData على كل موضوع لملقم RTD عندما يتم إغلاق المصنف أو إنهاء Excel; بدلاً من ذلك، يقوم Excel يستدعي ServerTerminate. عند إنشاء ملقم RTD يجب رمز عن أي الضرورية تنظيف المواضيع أو كائنات أخرى عند وقع الحدث ServerTerminate.

(c) يوم شركة Microsoft حقوق كافة محجوز. المساهمات قبل Lori B. Turner ، Microsoft Corporation.

مراجع
للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
284883الملقم RTD غير إرسال إعلامات تحديث إلى مثيلات متعددة من Excel
xl2007

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

خصائص

رقم الموضوع: 285339 - آخر مراجعة: 03/29/2007 16:44:08 - المراجعة: 5.1

Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Visual Basic 6.0 Professional Edition

  • kbmt kbexpertisebeginner kbautomation kbhowto KB285339 KbMtar
تعليقات
=">/html>">