RTD Server verzendt geen update meldingen naar meerdere exemplaren van Excel

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 284883 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Symptomen

Wanneer u meerdere exemplaren van Microsoft Office Excel samen met uw RTD (Realtimedata) server, verschijnt het volgende bericht:
De server met real-time gegevens 'servername.classname' is niet reageert. Wilt u proberen de server opnieuw op te starten in Microsoft Excel?
De RTD-server is dus geen update meldingen verzenden meerdere exemplaren van Excel.

Oorzaak

Wordt dit bericht weer gegeven als de RTD-server is een ActiveX EXE dat is gebouwd voor voor meerdere toepassingen instancing, standaard instelling ActiveX EXE projecten in Visual Basic. Kan een ActiveX EXE die is MultiUse door clients worden gedeeld. Afzonderlijke instanties Excel delen RTB-servers niet. Wanneer Excel wordt gestart een RTD-Server, roept Excel de RTD-ServerServer Startmethode en geeft het een verwijzing naar deTerugbellenobject voor dat exemplaar van Excel. Dus als twee exemplaren van Excel probeert te delen dezelfde RTD-server, het tweede exemplaar wordt vervangen door deTerugbellenobject voor het eerste exemplaar. Dit probleem wordt, verliest hetTerugbellenobject voor het eerste exemplaar.

Oplossing

SingleUse instancing voor EXE ActiveX-componenten gebruiken die zal fungeren als RTB-servers voor Excel. Wanneer u ActiveX EXE componenten als bouw SingleUse, elk exemplaar van Excel heeft een eigen exemplaar van het OTO server.

Een andere oplossing is het gebruik van een ActiveX-DLL voor de RTD-server in plaats van een ActiveX EXE. ActiveX DLL-bestanden laden in de hetzelfde procesruimte als hun cliënten en elk exemplaar van Excel heeft altijd haar eigen exemplaar van de RTD-server.

Meer informatie

Stappen om het probleem te reproduceren

  1. Maak in Visual Basic een nieuw ActiveX EXE project.
  2. Op deProjectmenu, klikt u opVerwijzingen.
  3. SelecteerObject bibliotheek van Microsoft Excel 2002, en klik vervolgens opOK.
  4. Op deProjectmenu, klikt u opProject1 eigenschappen.
  5. Wijzig de Project naam in 'rtdexe' en klik vervolgens opOK.
  6. Wijziging deNaameigenschap van deClass1klassemodule "Voorbeeld".
  7. Voeg toe de de volgende code aan de klassemodule.
    Option Explicit
    
    Implements IRtdServer  'Interface allows Excel to contact this RealTimeData server.
    
    Dim nCounter As Long
    
    Private Function IRtdServer_ConnectData(ByVal TopicID As Long, Strings() As Variant, _
       GetNewValues As Boolean) As Variant
        IRtdServer_ConnectData = nCounter
    End Function
    
    Private Sub IRtdServer_DisconnectData(ByVal TopicID As Long)
        nCounter = 0
    End Sub
    
    Private Function IRtdServer_Heartbeat() As Long
        'Do nothing.
    End Function
    
    Private 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 = aUpdates
    End Function
    
    Private 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 Function
    
    Private Sub IRtdServer_ServerTerminate()
        KillTimer 0, g_TimerID
    End Sub
    					
  8. Op deProjectin het menu selecterenModule toevoegen.
  9. Voeg de volgende code aan de nieuwe module.
    Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, _
       ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Public Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
    
    Public Const TIMER_INTERVAL = 5000
    Public oCallBack As Excel.IRTDUpdateEvent
    Public g_TimerID As Long
    
    Public Sub TimerCallback(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, _
       ByVal dwTime As Long)
        oCallBack.UpdateNotify
    End Sub
    					
  10. Op deBestandmenu, klikt u opRTDExe.exe makenhet onderdeel maken.
  11. Maak een nieuwe werkmap in Excel.
  12. Typ de volgende formule in cel A1:
    =RTD("RTDExe.example",,"X")
    De functie geeft als resultaat 0.
  13. Na vijf seconden wordt de waarde in A1 stappen om aan te geven dat is de server Excel-updates melding.
  14. Start een andere sessie van Excel en voegt u een nieuwe werkmap.
  15. Typ de volgende formule in cel A1:
    =RTD("RTDExe.example",,"X")
    De functie geeft als resultaat 0.
  16. De waarde in A1 van het tweede exemplaar van Excel blijft bij te werken. Maar niet door de waarde in A1 van het eerste exemplaar. Na de heartbeat-interval is vers treken (15 seconden is de standaard instelling), het eerste exemplaar Excel verschijnt het volgende foutbericht:
    Het real-time data server "rtdexe.example" is niet reageert. Wilt u In Microsoft Excel probeert de server opnieuw op te starten?
    Als u klikt opJa, de server opnieuw is opgestart, en ontvangt het eerste exemplaar van Excel meldingen van de server bijwerken. Echter, nadat u de server opnieuw het tweede exemplaar van Excel genereert vervolgens hetzelfde bericht na de heartbeat-interval is bereikt.
Het probleem te verhelpen zodat u deze fout ontvangt Schakel over naar het project in Visual Basic, wijzigen deInstancingeigenschap van deVoorbeeldklasseSingleUse, en vervolgens opnieuw de RTD-server.

Referenties

Voor meer informatie klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
285339Een RTG-Server maken voor Excel

Eigenschappen

Artikel ID: 284883 - Laatste beoordeling: zaterdag 26 februari 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Trefwoorden: 
kberrmsg kbpending kbprb kbmt KB284883 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:284883

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com