2013-08-27 6 views
0

엑셀 입력 통합 문서 A에는 내부 워크 시트 참조 및 블룸 버그 함수와 일부 계산 필드를 기반으로 한 일부 입력이 있습니다.VBA가 끝날 때까지 Excel 링크 (입력으로 일부 블룸버그 기능 사용)가 업데이트되지 않음

나는 A에서 정보를 검색 할 필요가있는 Excel 출력 통합 문서 B를 가지고 있습니다. 그러나 B의 VBA 내에서 통합 문서 A를 열면 VBA가 끝날 때까지 링크 정보를 업데이트하지 않습니다.

A는 sheet1, sheet2, sheet3을 포함합니다. sheet1 셀 (1,1)의 셀을 원하고 셀 (1,1)의 내용을 sheets2! cells (2,1) 이 sheets2! cells (2,1) mite는 다른 탭 또는 일부 bloomberg 함수 호출 입력에서 참조를 기반으로 계산 필드가 될 수 있습니다.

통합 문서 A 내의 모든 링크의 유효성을 검사하여 내 통합 문서 B가 모든 업데이트 된 정보를 검색 할 수있는 방법이 있습니까?

나는 계산 중 일부는 VBA를 사용하여, 업데이트를 통해 이동하지만 # VALUE를 반환합니다 강제로

Application.Workbooks.Open FileName:=path_array(tmp), UpdateLinks:=3  
Application.Calculate 
Application.RTD.ThrottleInterval = 0 
Application.Run "RefreshAllStaticData" 
Application.Run "ConnectChartEvents" 
Application.Run "RefreshData" 
Application.Run "RefreshEntireWorkBook" 
DoEvents 

VBA Output looks like this: 
A  B  C D E F G H I J 
4.4% 2.1% 2.2% #VALUE! #VALUE! #VALUE! #VALUE! 11 5 #VALUE! 
Manual like this: 
A  B  C D E F G H I J 
4.4% 2.1% 2.2% 3.1% 4.2% 5.5% 3.4% 11 5 8.0% 

을 시도했다! 추가 참조 레이어가있는 필드의 경우 수동으로 열면 모든 것이 자동으로 업데이트됩니다. 왜 그런 차이가 있는지 고투하고 있습니다. 이 입력이 업데이트 될 때까지 VBA를 클럭하는 방법이 있습니까? 미리 감사드립니다.

+0

DoEvents를 사용해 보셨나요? – RBarryYoung

+0

아니, 그 도움이 될 것입니까? 내가 얻는 큰 혼란은 매뉴얼과 vba가 자동으로 열리는 차이점이있는 이유이다. 나는 시도를 줄 것이다 – YoYue

+0

안녕하세요, RBarryYoung, DoEvents, 행운을 빕니다. ( – YoYue

답변

2

저는 블룸버그에 익숙하지 않지만 여기에는 세 가지가 있습니다.

통합 문서 B의 실행을 Application.OnTime으로 지연시킬 수 있습니다. 통합 문서 A를로드 한 다음 두 번째 또는 두 번째 지연으로 Application.OnTime을 사용하여 통합 문서 B의 두 번째 하위를 호출하면 통합 문서 A가로드시 실행되는 모든 코드를 실행할 수 있어야합니다.

Application.RTD.RefreshData 도움이 될 수 있습니다.

질문에 더 구체적으로 대답합니까? How to refresh/load RTD Bloomberg function (BDH) in excel in vba

+0

안녕 AndASM, 답장을 보내 주셔서 감사합니다. 문제는 입력 통합 문서 A입니다. 수동으로 열면 업데이트하는 데 몇 초가 걸립니다. VBA를 사용하여 통합 문서 B에서 열면 on.time 2 초 지연을 둡니다. vba가 끝난 후에 만. – YoYue

+0

@YoYue 수식 대신 VBA API를 사용하여 데이터를 검색하는 것이 가장 좋습니다. VBA 코드가 실행되는 동안 수식이 업데이트되지 않습니다. – assylias

+0

@assylias 문제는 내가 그 입력 시트를 소유하고 있지 않다는 것입니다. 매핑 논리는 20+ 워크 시트 통합 문서에서 정말 지저분합니다. VBA API에 모든 것을 다시 채워 넣으면 짧은 시간 안에 할 수있는 일이 아닙니다. 이 문제를 해결할 수있는 방법이 있는지 알 수 있습니까? 당신이 옳다면, 수식 업데이트는 Excel이 무료이거나 매 2 초마다 기본적으로 업데이트됩니다. 현재 VBA가 실행 중이면 수식이 고정되어 현재 Excel이 완료 될 때까지 대기합니다.나는 그러한 업데이트가 발생할 수있는 블룸버그 함수가 존재한다고 가정하고있다. – YoYue

관련 문제