RTD 서버 여러 Excel 인스턴스에 업데이트 알림 보내기

기술 자료 번역 기술 자료 번역
기술 자료: 284883 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

Microsoft Office Excel의 여러 인스턴스를 RTD (RealTimeData) 서버를 함께 사용할 때 다음과 같은 메시지가 나타날 수 있습니다.
'servername.classname' 실시간 데이터 서버가 응답하지 않습니다. 서버를 다시 시도하는 횟수를 사용하시겠습니까?
따라서 RTD 서버에서 여러 Excel 인스턴스에 업데이트 알림을 보낼 수 없습니다.

원인

RTD 서버가 ActiveX EXE 프로젝트를 Visual Basic의 기본 설정은 인스턴스 만들기, MultiUse 작성된 ActiveX EXE를 경우 이 메시지가 나타날 수 있습니다. MultiUse 있는 ActiveX EXE는 클라이언트 간에 공유할 수 있습니다. 별도의 Excel 인스턴스에서 RTD 서버를 공유할 수 없습니다. RTD 서버 Excel을 시작할 때 Excel RTD 서버 ServerStart 메서드를 호출하고 Excel 인스턴스가 콜백 개체에 대한 참조를 전달합니다. 따라서 Excel의 두 인스턴스가 같은 RTD 서버를 공유하는 경우 두 번째 인스턴스를 첫 번째 인스턴스에 대한 콜백 개체를 바꿉니다. 이 문제는 첫 번째 인스턴스에 대한 콜백 개체를 무효화합니다.

해결 방법

RTD 서버를 Excel 동작할 ActiveX EXE 구성 요소에 대한 SingleUse 인스턴싱 사용하십시오. SingleUse 같이 ActiveX EXE 구성 요소를 빌드할 때 Excel의 각 인스턴스는 자체 인스턴스가 있는 RTD 가진 서버.

RTD 서버가 ActiveX EXE 대신 ActiveX DLL을 사용할 다른 솔루션입니다. 해당 클라이언트 동일한 프로세스 공간에서 ActiveX DLL을 로드하고 Excel의 각 인스턴스는 항상 RTD 서버가 자체 인스턴스가 있습니다.

추가 정보

문제를 재현하는 방법

  1. Visual Basic에서 새 ActiveX EXE 만들 프로젝트.
  2. 프로젝트 메뉴에서 참조 를 누릅니다.
  3. Microsoft Excel 2002 개체 라이브러리 를 선택한 다음 확인 을 클릭하십시오.
  4. 프로젝트 메뉴에서 Project1 속성 을 클릭하십시오.
  5. 프로젝트 이름 "RTDExe"를 변경하고 확인 을 클릭하십시오.
  6. Class1 클래스 모듈의 Name 속성을 "예" 로 변경하십시오.
  7. 다음 코드를 클래스 모듈에 추가하십시오.
    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. 프로젝트 메뉴에서 모듈 추가 선택하십시오.
  9. 새 모듈에 다음 코드를 추가하십시오.
    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. [파일] 메뉴에서 [구성 요소 빌드 RTDExe.exe 만들기 클릭하십시오.
  11. Excel에서 통합 문서를 새로 만듭니다.
  12. A1 셀에 다음 수식을 입력하십시오.
    =RTD("RTDExe.Example",,"X")
    이 함수는 0을 반환합니다.
  13. 5초 후에, 서버 업데이트 Excel 알리는 것입니다 나타내려면 A1 단위로 값.
  14. Excel의 다른 인스턴스를 시작하고 새 통합 문서를 추가하십시오.
  15. A1 셀에 다음 수식을 입력하십시오.
    =RTD("RTDExe.Example",,"X")
    이 함수는 0을 반환합니다.
  16. Excel의 두 번째 인스턴스의 A1 값을 계속 업데이트합니다. 그러나 첫 번째 인스턴스의 A1 값을 지원하지 않습니다. 이후 하트비트 간격이 경과할 (15초 기본값은), Excel 첫 번째 인스턴스가 다음과 같은 오류 메시지가 표시됩니다.
    'rtdexe.example' 실시간 데이터 서버가 응답하지 않습니다. 서버를 다시 시도하는 횟수를 사용하시겠습니까?
    , 서버 다시 시작을 클릭하고 Excel 첫 번째 인스턴스의 업데이트를 받을 경우 서버에서 알림을. 그러나 Excel의 두 번째 인스턴스가 서버를 다시 시작한 후 하트비트 간격을 도달한 후 다음 동일한 메시지를 생성합니다.
이 오류를 받을 수 있도록 문제를 해결하기 위한 Visual Basic 프로젝트에서 전환, SingleUseExample 클래스의 인스턴싱 속성을 변경하고 RTD 서버를 다시.

참조

추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 확인하십시오:
285339Excel RealTimeData 서버 만드는 방법

속성

기술 자료: 284883 - 마지막 검토: 2007년 5월 14일 월요일 - 수정: 3.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
키워드:?
kbmt kberrmsg kbpending kbprb KB284883 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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