Type Here to Get Search Results !

01 Go언어:HWP자동화: Go-ole package 및 참고 문서

 


여기서 저는 한글이 설치되어 있는 상태에서 Go언어로 "한글 오토메이션"을 이용하여 자동화를 하는 것을 다뤄보려 합니다.


제가 하려는 작업은 한글HWP 프로그램이 있어야 가능합니다. 한글 프로그램이 없는 상태에서도 HWP나 HWPX 파일들을 만들고 편집할 코드를 만드는 것은 제 능력 밖의 일입니다.


Go언어로 HWP 자동화를 해보려고 하는 제 환경은 다음과 같습니다.

  •  한글HWP 2020버전. 별도의 한글오토메이션 설치는 필요하지 않습니다.
  •  Go 1.21.3 64bit


한글 오토메이션에 대해서는 한컴디벨로퍼 사이트(https://developer.hancom.com/)에서 확인할 수 있습니다. 사이트에 나온 한글 오토메이션에 대한 설명은 다음과 같습니다.

외부 클라이언트에서 OLE(COM) Object를 이용하여 한글 기능을 실행하거나 문서를 제어할 수 있습니다.


... OLE가 어떤 녀석인지 모르겠습니다. ChatGPT에게 물어보았습니다.

OLE(Object Linking and Embedding)는 마이크로소프트에서 개발한 기술로, 다양한 애플리케이션 간에 객체를 공유하고 재사용할 수 있게 해주는 기능입니다. 이 기술을 통해 사용자는 한 애플리케이션에서 생성한 객체를 다른 애플리케이션에 삽입(Embedding)하거나 링크(Linking)할 수 있습니다. 예를 들어, Microsoft Word 문서에 Excel 스프레드시트를 삽입하거나 링크할 수 있으며, 이를 통해 문서 내에서 직접 Excel 데이터를 보여주고, 업데이트할 수 있습니다.


분명 읽어지긴 하는데 그리 이해되지 않는 설명입니다. 일단 Go언어에서 OLE 관련 패키지를 찾아보니, go-ole 패키지가 보입니다.


이번에는 Gemini에게 go-ole에 대해 설명을 부탁했습니다.

Go 언어 패키지: go-ole

go-ole 패키지는 **COM(Component Object Model)**을 사용하여 Windows 시스템에서 자동화된 작업을 수행하도록 Go 프로그래머를 지원하는 오픈 소스 패키지입니다.

주요 기능:

  • COM 객체 생성 및 조작: go-ole을 사용하여 COM 객체를 생성하고, 속성을 설정하고, 메서드를 호출할 수 있습니다.
  • VARIANT 형식 변환: go-ole은 Go 유형과 VARIANT 형식 간의 변환을 제공하여 COM 객체와의 상호작용을 용이하게 합니다.
  • OLE 자동화 서버 구현: go-ole을 사용하여 Go 코드를 기반으로 OLE 자동화 서버를 구현할 수 있습니다.


go-ole 패키지 설치는 다음과 같습니다.

go get github.com/go-ole/go-ole 

앞으로 Go언어를 이용한 HWP 자동화는 go-ole 패키지를 지겹도록 써야합니다.

또한, 한글 오토메이션에 어떤 함수를 사용할 수 있고, 어떤 액션, 파라미터는 어떻게 되는지 계속 찾아봐야 하니 API 매뉴얼을 다음 링크에서 다운로드 받아서 매번 살펴봐야 합니다.


개인적으로는 한컴에서 API 매뉴얼을 다시 검토했으면 좋겠습니다. 막상 매뉴얼을 보며 코딩을 하다보면 함수명이나 자료형이 매뉴얼과 맞지 않는 부분이나 오기 등이 있고, 어느 부분은 전혀 설명이 없어 난감한 부분이 한둘이 아닙니다. 파이썬으로 하시는 분들의 코드나 매크로 기능을 참조할 수 있으면 그나마 다행인데, 그마저도 안되면 정말 며칠씩 이런저런 시도를 해보며 방법을 찾아낼 때도 있습니다. (물론 제가 실력이 미천하여 제대로 이해하지 못하여서 시간이 더 걸리는 것도 있습니다.)

앞으로 Go언어로 HWP 작업을 자동화 하는 것은 저 매뉴얼에서 어떤 함수, 액션, 파라미터가 있는지 찾아보고, 나중에 설명하겠지만 매크로 기능으로 어떤 방법이 있는지 확인해보고, go-ole로 어떻게 실행하고 값을 넣고 읽어올 수 있는지 궁리하는 일들의 반복입니다.

어떤 작업이든 자동화라는 것이 작업을 분석하고 문제 해결 알고리즘을 생각해내고 코드를 만들고 테스트하는 것이 지루하고 힘든 일입니다. 하다보면 "자동화 프로그램 만드는 동안 그냥 하던대로 하면 이미 일이 많이 진행될 수 있었을텐데?" 하는 소릴 들을 수 있습니다. 근데, 자동화의 묘미는 주기적으로 반복되는 시간 소모적인 단순 작업을 코드만 잘 만들어 놓으면 실수를 줄이고, 업무 중에도 여유를 즐기며, 일찍 퇴근할 수 있는 게 아닐까 싶습니다.

댓글 쓰기

0 댓글
* Please Don't Spam Here. All the Comments are Reviewed by Admin.