본문 바로가기
  • 데이터야 놀자
데이터 분석 환경

엑셀 데이터 DDE 연동 2 - 엑셀파일 자동저장 하는 방법

by 데이터랑 2024. 7. 11.
728x90

어제 DDE 연결을 하고 해당엑셀파일을 파이썬에서 데이터프레임으로 가져와 데이터 처리를 하려고 했다.

그런데 1분 간격으로 데이터를 모니터링하려고 했는데 계속 같은 데이터만 읽어오는 오류를 발견했다.

 

이유는 엑셀에서 저장된 시점에서의 값만 가져오기때문에 실시간 반영하는 엑셀데이터 값을 가져오려면

강제로 저장버튼을 눌러주어야 한다는 것을 깨닫고

이번에는 VBA로 1분간격으로 자동 저장하는 스크립트를 작성해 보았다.

 

그런데 이 방법은 매월 새로운 DDE를 만들 때마다 이 스크립트를 반영해주어야 한다는 불편함이 존재한다.

시간이 나면 다른 방법을 찾아보고 싶은데 일단 빨리 진행해야 하는 관계로 일단 이 방법 노팅해 둔다.

 

===> 이후에 다른 방법 사용 : 파이썬으로 접근하지 말고 집계용 엑셀파일 만들어 여기서 DDE 파일을 참조하고 저장하면 됨

 

1.  엑셀 VBA에서 모듈을 삽입하고  다음과 같은 스크립트를 작성한다.

 

엑셀자동저장 스크립트 작성

 

Dim SaveTime As Date

Sub StartSave()
    '''' 1분 후에 자동 저장을 실행하도록 시간간격을 설정
    SaveTime = Now + TimeValue("00:01:00")
    Application.OnTime SaveTime, "Save"
End Sub
Sub StopSave()
    ' 자동 저장을 중지
    On Error Resume Next
    Application.OnTime SaveTime, "Save", , False
    On Error GoTo 0
End Sub
Sub Save()
    ' 현재 파일을 저장
    ThisWorkbook.Save
    ' 다음 저장 시간을 다시 설정
    StartSave
End Sub

 

2. 현재_통합_문서를 클릭하고  현재 워크북에 이벤트 스크립트를 작성한다.

 

엑셀열때 발생하는 이벤트 작성

 

 

'=====  엑셀파일 열때 실행할 이벤트 스크립트  : 워크북에서 작성해야함====
Private Sub Workbook_Open()
    StartSave
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    StopSave
End Sub

https://datawith.tistory.com/135

 

엑셀데이터 DDE 연동 기능으로 관심종목 실시간 현황판 만들기

키움증권에서 제공하는 OPEN API 이용해서 데이터를 실시간으로 데이터를 보는 것을 파이썬으로 구현할까 했는데 그것보다 더 간단한 방법,  증권사 HTS에서 제공하는 데이터 DDE연동하기 기능이

datawith.tistory.com

 

728x90
728x90

댓글