커뮤니티

엑셀로 데이터 전송시 주소동적변경 문의

프로필 이미지
rayen
2019-04-30 16:28:32
2820
글번호 224846
답변완료
안녕하십니까? 예스스팟에서 엑셀로 데이터 전송시 주소 동적변경 문의 드립니다. var CallIV, PutIV; function Main_OnStart() { Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--시작--"); var D = new Date(); var hh = D.getHours(); var mm = D.getMinutes(); if (hh > 09 && mm > 01) { Main.SetTimer(1, 1000); Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--타이머셋--"); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { CallIV = (O1.GetImpliedVolatility(0, 0)+O1.GetImpliedVolatility(0, 1)+O1.GetImpliedVolatility(0, 2))/3; PutIV = (O1.GetImpliedVolatility(1, 0)+O1.GetImpliedVolatility(1, 1)+O1.GetImpliedVolatility(1, 2))/3; E1.SetRowData(1, "A1", CallIV); E1.SetRowData(1, "B1", PutIV); Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"CallIV:",CallIV," /PutIV:",PutIV); var D = new Date(); var hh = D.getHours(); var mm = D.getMinutes(); if (hh>15 && mm>30) Main.KillTimer(1); E1.Save(); } } 위와 같은 수식에서 CallIV와 PutIV를 엑셀파일의 "A1"과 "B1"으로 전송하게 되는데 저렇게 하게되면 데이터가 전송될때마다 동일한 엑셀의 셀에 데이터가 중첩되는 문제가 발생합니다. 이런 문제를 해결하기 위해서 데이터전송 주소를 전송시마다 변경하는 방식이나 엑셀파일에서 VBA로 처리하는 방안을 생각했는데 우선 예스스팟과 연동되는 파일은 매크로엑셀파일(.xlsm)이 아니라 일반엑셀파일(.xlsx)이기 때문에 데이터를 자동연결할 수가 없는 문제가 있습니다. 일반 파일과 매크로 파일을 수식으로 연결한다고 하더라도 자동으로 값이 수정되지 않고 작동시에만 수정하는 문제로 데이터가 따라오지 않았습니다. 그래서 예스스팟에서 데이터 전송 엑셀주소를 1회차 전송시, A1 2회차 전송시, A2 ... n회차 전송시, An 으로 변경하는 동적변경을 할 수 있지 않을까 하는 의문이 들었는데, ""안에 들어가는 값은 텍스트 값으로 수정이 안되는 문제점이 있어서 해결을 못했습니다. 이를 해결할 수 있는 방법이나 새로운 방법에 대해서 알려주시면 감사하겠습니다. 수고하십시오.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-04-30 17:14:52

안녕하세요 예스스탁입니다. 문자와 숫자를 조합해서 셀명을 지정하시면 됩니다. var CallIV, PutIV; var TimeCount; function Main_OnStart() { Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--시작--"); var D = new Date(); var hh = D.getHours(); var mm = D.getMinutes(); if (hh > 09 && mm > 01) { Main.SetTimer(1, 1000); Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--타이머셋--"); TimeCount = 0; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { TimeCount = TimeCount+1; var AN = "A"+TimeCount;//타이머동작시에 A1,A2,A3,A4~~~로 변경 var BN = "B"+TimeCount;//타이머동작시에 B1,B2,B3,B4~~~로 변경 CallIV = (O1.GetImpliedVolatility(0, 0)+O1.GetImpliedVolatility(0, 1)+O1.GetImpliedVolatility(0, 2))/3; PutIV = (O1.GetImpliedVolatility(1, 0)+O1.GetImpliedVolatility(1, 1)+O1.GetImpliedVolatility(1, 2))/3; E1.SetRowData(1, AN, CallIV); E1.SetRowData(1, BN, PutIV); Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"CallIV:",CallIV," /PutIV:",PutIV); var D = new Date(); var hh = D.getHours(); var mm = D.getMinutes(); if (hh>15 && mm>30) Main.KillTimer(1); E1.Save(); } } 즐거운 하루되세요 > rayen 님이 쓴 글입니다. > 제목 : 엑셀로 데이터 전송시 주소동적변경 문의 > 안녕하십니까? 예스스팟에서 엑셀로 데이터 전송시 주소 동적변경 문의 드립니다. var CallIV, PutIV; function Main_OnStart() { Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--시작--"); var D = new Date(); var hh = D.getHours(); var mm = D.getMinutes(); if (hh > 09 && mm > 01) { Main.SetTimer(1, 1000); Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--타이머셋--"); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { CallIV = (O1.GetImpliedVolatility(0, 0)+O1.GetImpliedVolatility(0, 1)+O1.GetImpliedVolatility(0, 2))/3; PutIV = (O1.GetImpliedVolatility(1, 0)+O1.GetImpliedVolatility(1, 1)+O1.GetImpliedVolatility(1, 2))/3; E1.SetRowData(1, "A1", CallIV); E1.SetRowData(1, "B1", PutIV); Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"CallIV:",CallIV," /PutIV:",PutIV); var D = new Date(); var hh = D.getHours(); var mm = D.getMinutes(); if (hh>15 && mm>30) Main.KillTimer(1); E1.Save(); } } 위와 같은 수식에서 CallIV와 PutIV를 엑셀파일의 "A1"과 "B1"으로 전송하게 되는데 저렇게 하게되면 데이터가 전송될때마다 동일한 엑셀의 셀에 데이터가 중첩되는 문제가 발생합니다. 이런 문제를 해결하기 위해서 데이터전송 주소를 전송시마다 변경하는 방식이나 엑셀파일에서 VBA로 처리하는 방안을 생각했는데 우선 예스스팟과 연동되는 파일은 매크로엑셀파일(.xlsm)이 아니라 일반엑셀파일(.xlsx)이기 때문에 데이터를 자동연결할 수가 없는 문제가 있습니다. 일반 파일과 매크로 파일을 수식으로 연결한다고 하더라도 자동으로 값이 수정되지 않고 작동시에만 수정하는 문제로 데이터가 따라오지 않았습니다. 그래서 예스스팟에서 데이터 전송 엑셀주소를 1회차 전송시, A1 2회차 전송시, A2 ... n회차 전송시, An 으로 변경하는 동적변경을 할 수 있지 않을까 하는 의문이 들었는데, ""안에 들어가는 값은 텍스트 값으로 수정이 안되는 문제점이 있어서 해결을 못했습니다. 이를 해결할 수 있는 방법이나 새로운 방법에 대해서 알려주시면 감사하겠습니다. 수고하십시오.