RTD sunucu için birden çok Excel örneği güncelleştirme bildirimlerini göndermiyor

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:284883
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Belirtiler
RealTimeData (RTD) sunucunuz ile birlikte Microsoft Office Excel birden çok örneğini kullandığınızda, aşağıdaki iletiyi alabilirsiniz:
'Servername.classname' gerçek zamanlı veri sunucusu yanıt vermiyor. Microsoft Excel'in sunucuyu yeniden denemek ister misiniz?
Bu nedenle, RTD sunucunuzun birden çok Excel örneği için bir güncelleştirme bildirimlerini göndermek değiştiremiyor.
Neden
Visual Basic'de ActiveX EXE projeler için varsayılan ayardır, örneklemesini MultiUse için yerleşik bir ActiveX EXE RTD sunucunuz olması durumunda, bu iletiyi alabilirsiniz. Bir ActiveX EXE MultiUse olan istemciler arasında paylaşılabilir. Ayrı bir Excel örneği RTD sunucuları paylaşamaz. Excel bir RTD Server başladığında, Excel RTD Server ServerStart yöntemini çağırır ve sonra Excel örneği için geri arama</a0> nesnesine bir başvuru gönderir. Bu nedenle, ikinci örnek, Excel'in iki kopyası aynı RTD sunucu paylaşım denerseniz, ilk örneği için geri arama nesnesi yerini alır. Bu davranış, ilk örneği için geri arama nesnesi geçersiz kılar.
Çözüm
RTD sunucuları olarak Excel çalışacak bileşenlerin ActiveX EXE SingleUse örneklerini kullanın. ActiveX EXE bileşenleri SingleUse oluşturduğunuzda, her Excel oturumunda RTD kendi örneği vardır. sunucu.

Bir ActiveX DLL DOSYASı yerine, bir ActiveX EXE RTD sunucunuz için kullanılacak başka bir çözümdür'ı tıklatın. Aynı işlemi alana istemcileri olarak ActiveX DLL yüklenemedi ve her Excel oturumunda, her zaman kendi RTD sunucu örneği vardır.
Daha fazla bilgi

Sorunu Yeniden Oluşturma Adımları

  1. Visual Basic'te, yeni bir ActiveX EXE oluşturma proje.
  2. Proje menüsünde Başvurular ' ı tıklatın.
  3. Microsoft Excel 2002 nesne kitaplığı ' nı seçin ve Tamam ' ı tıklatın.
  4. Proje menüsünde Project1 Properties ' i tıklatın.
  5. "RTDExe için" proje adını değiştirin ve Tamam ' ı tıklatın.
  6. Name özelliği Class1 sınıf modülünün "İçin örnek" olarak değiştirin.
  7. Aşağıdaki kod sınıf modülüne ekleyin.
    Option ExplicitImplements IRtdServer  'Interface allows Excel to contact this RealTimeData server.Dim nCounter As LongPrivate Function IRtdServer_ConnectData(ByVal TopicID As Long, Strings() As Variant, _   GetNewValues As Boolean) As Variant    IRtdServer_ConnectData = nCounterEnd FunctionPrivate Sub IRtdServer_DisconnectData(ByVal TopicID As Long)    nCounter = 0End SubPrivate Function IRtdServer_Heartbeat() As Long    'Do nothing.End FunctionPrivate Function IRtdServer_RefreshData(TopicCount As Long) As Variant()    Dim aUpdates(0 To 1, 0 To 0) As Variant    nCounter = nCounter + 1    aUpdates(0, 0) = 0   'For this sample, we only refresh topic id = 0    aUpdates(1, 0) = nCounter    TopicCount = 1    IRtdServer_RefreshData = aUpdatesEnd FunctionPrivate Function IRtdServer_ServerStart(ByVal CallbackObject As Excel.IRTDUpdateEvent) As Long    nCounter = 0    Set oCallBack = CallbackObject    g_TimerID = SetTimer(0, 0, TIMER_INTERVAL, AddressOf TimerCallback)    If g_TimerID > 0 Then IRtdServer_ServerStart = 1       'Any value <1 indicates failure.End FunctionPrivate Sub IRtdServer_ServerTerminate()    KillTimer 0, g_TimerIDEnd Sub					
  8. Proje) menüsünde Add Module ' ı seçin.
  9. Aşağıdaki kod yeni bir modüle ekleyin.
    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					
  10. Dosya menüsünde bileşeni oluşturmak için RTDExe.exe yap ' ı tıklatın.
  11. Excel'de, yeni bir çalışma kitabı oluşturun.
  12. A1 hücresine aşağıdaki formülü yazın:
    =RTD("RTDExe.Example",,"X")
    Işlevi 0 sonucunu verir.
  13. Beş saniye sonra güncelleştirmelerin Excel bildiren bir sunucu olduğunu göstermek üzere A1 halinde değeri.
  14. Excel'in başka bir örneği'ni başlatın ve sonra yeni bir çalışma kitabını ekleyin.
  15. A1 hücresine aşağıdaki formülü yazın:
    =RTD("RTDExe.Example",,"X")
    Işlevi 0 sonucunu verir.
  16. Değer Excel'in ikinci bir örneği, A1, güncelleştirmeye devam eder. Ancak, değer a1'ın ilk örneği yok. Sonra sinyal aralığı geçti (15 saniye olan varsayılan), Excel ilk örneği aşağıdaki hata iletisini görüntüler:
    'Rtdexe.example' gerçek zamanlı veri sunucusu yanıt vermiyor. Microsoft Excel'in sunucuyu yeniden denemek ister misiniz?
    Evet, sunucu yeniden tıklatın ve bu güncelleştirme, Excel'in ilk örneği alır, sunucu bildirimleri. Sunucu, Excel'in ikinci bir örneği yeniden başlatıldıktan sonra sinyal aralığı ulaşıldıktan sonra ancak daha sonra aynı ileti oluşturur.
Bu hata almak için bu sorunu gidermek için <a0></a0>, Visual Basic projesinde geçin, SingleUse için <a0>örnek</a0> sınıfının Instancing özelliğini değiştirmek ve sonra RTD sunucu yeniden.
Referanslar
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
285339Excel'in bir RealTimeData sunucusu oluşturma
rtdserver realtimedata gerçek zamanlı veri sunucusu gerçek zamanlı rtd prb XL2002 XL2002 XL2003 XL2007

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 284883 - Son İnceleme: 01/12/2015 17:24:14 - Düzeltme: 3.2

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

  • kbnosurvey kbarchive kbmt kberrmsg kbpending kbprb KB284883 KbMttr
Geri bildirim