한컴 문서 파일에서 차트 변환 자동화 문의

안녕하세요.

한컴 네오로 작성된 문서들을 불러와서
문서 내용 중 차트를 찾아 차트 변환 기능을 통해서 차트 변환을 하려고 합니다.

이때 변환하려는 이유는 xml로 문서를 저장한 뒤 차트의 내용을 확인하려고 하는데
네오로 작성된 문서를 xml 변환 시 차트 bindata를 base64로 변환했을 때 xml 내용이 포함되지 않는 문제가 있어서 확인해보니 2020 이상에서는 차트 변환 기능으로 변환된 차트는 xml로 파일 저장 시 bindata를 디코드했을 때 바이너리와 xml을 같이 포함하고 있어서 xml 부분을 읽어올 수 있었기 때문입니다.

일단 차트 변환 기능은 매크로 정의를 통해 HAction.Run(“VtChartConverter”) 으로 가능한 걸 확인 했습니다만 매크로 등으로 문서 내에 있는 차트를 찾아서 선택할 수 있는 방법이 있는지 문의 드립니다.

감사합니다.

1개의 좋아요

안녕하세요
한글2024 이후 버전이라면
아래 코드처럼 개체를 선택하고 해당 동작을 하면 좋을 것 같습니다.
그 이전 버전이라면 SelectCtrlFront를 활용하는 방법도 있을 것 같습니다.

VtChartConverter 내부에서 차트가 아니면 동작을 안 하기 때문에 편법이긴 하지만ㅠㅠ 이렇게 하면 동작할 것 같습니다.

var ctrl = HeadCtrl;
	while (ctrl != null) {
			SelectCtrl(ctrl.GetCtrlInstID(), 1);
            Run(“VtChartConverter”)
			Run("Cancel");
		ctrl = ctrl.Next;
	}

감사합니다.

알려주신 내용 덕분에 키워드를 얻어서 headctrl 로 요소 검색하는 부분에서 아래와 같이
찾아가도록 변경하니 우선 차트 요소와 차트 요소가 선택까지 되는 것을 확인 했습니다.

메시지박스의 계속 버튼을 누르도록 코드를 작성했는데
SetMessageBoxMode를 0x10 등으로 변경해도 메시지 박스가 자동 선택이 되지 않는 문제가 있는데
혹시 작성된 코드에서 문제가 있는지 한번 확인 부탁드립니다.

다시 한번 감사드립니다.


        hwp.Run("MoveDocBegin")
        hwp.Run("SelectCtrlFront")        
        
        while True:
            curr = hwp.KeyIndicator()
            print(curr[-1])
            hwp.Run("SelectCtrlFront")            
            hwp.SetMessageBoxMode(0x111111) #메세지박스 계속 버튼이 자동으로 눌러지도록 함
            hwp.Run("VtChartConverter")            
            # hwp.Run("Cancel")

            next = hwp.KeyIndicator()
            if next == curr:                
                break


        print('end')
        hwp.SetMessageBoxMode(0x0000F0) #메시지 박스 원래대로
        hwp.Clear(3)

해당 메세지를 안 뜨게 하는 방법은 한글에서는 없습니다ㅠㅠ

해당 메세지 박스의 윈도우 핸들을 찾은 다음 CLOSE 메세지를 보내는 방법이 있을 것 같습니다.

아 그렇군요 MessageBoxMode 변경으로 해결될 줄 알았는데 아쉽습니다.
답변 정말 감사합니다!