2014-02-14 2 views
0

C#으로 작성된 Excel 추가 기능이 있습니다. 추가 리본 단추에서 "새로 고침"을 클릭하면 서버에서 데이터를 가져 와서 Excel에 플롯합니다.
클라이언트는 특정 시간 또는 매일 몇 시간마다 매일 데이터를 새로 고침하려고합니다. VBA 코드로 작성할 수 있지만 원하지 않습니다. AddIn에이 기능을 추가하여 클라이언트가 자동 새로 고침을 수행하기위한 VBA 코드를 작성하지 않도록 할 생각입니다. 나는 타이머를 생각하고 있지만 아직 어떻게해야할지 모르겠다. 도와주세요,Excel 추가 기능에서 실행할 함수를 예약하십시오.

답변

1

그들은 그것을 할 수 있지만 그들이 원하지 않는 VBA 코드를 작성할 수 있습니다.

그래, 엑셀은 기본적으로 AFAIK 일정을 처리하지 않습니다.

아마도 C#으로 작업 스케줄러를 작성할 수는 있지만 클라이언트가 코드를 작성하고 싶지 않은 경우에는 아무것도 얻지 못합니다. http://windows.microsoft.com/en-US/windows/schedule-task#1TC=windows-7

지금 당신은 프라이팬에서,하지만 화재에 : 귀찮게 왜

는하지만, 이미 해본 적이 Windows 작업 스케줄러의 대상이 Excel 통합 문서 자체 사용자 인 경우 현재 파일을 열었으므로 많은 불쾌한 문제가 발생합니다.

작업 스케줄러는 다른 파일을 대상으로하고 사용자의 Excel 파일에서 이벤트 수신기를 실행해야합니다. 아마도 VBA 코드 작성을 의미합니다.

걸림 수 있습니다.

[편집]

이 시도 : http://www.mrexcel.com/forum/excel-questions/528653-visual-basic-applications-file-watcher-possible.html 당신은 이미 새로 고침을 자동화하는 간단합니다 C#을에 추가 기능을 작성한 경우

0

.

새로 고침 논리를 트리거하기 전에 추가가로드되는 지점에서 스레드를 시작하여 주어진 시간 동안 기다릴 수 있습니다. 이 작업을 수행 할 경우 추가 기능이 언로드 될 때 (엑셀 종료시) 스레드가 다시 정리되도록해야합니다. Thread.Sleep (myRefreshTime)을 사용하여 새로 고침하는 동안 기다리지 않도록하십시오. 매 2 시간마다 새로 고침하면 스레드가 2 시간 동안 중단되어 스레드 처리가 어려워집니다. wait handle을 사용하여 스레드를 제어하고 처분해야 할 때 제 시간에 적절한 종료가 이루어 지도록하는 것이 좋습니다. 특정 시간대를 트리거하는 것은 너무 단순해야합니다. addin이로드 될 때 DateTime.Now()가 무엇인지 확인하고 myRefreshTime의 값을 정해진 시간과 비교하여 계산할 수 있습니다.

관련 문제